![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файловая система и TREEVIEW [D5, Win95/98]
main © (2004-11-18 08:30:00)Как сделать процедуру, позволяющую просканировать заданную директорию на машине(например, 'C:\MainDir') и вывести ее содержимое в TREEVIEW (и файлы и каталоги)
Dimaxx (2004-11-19 22:57:00) [1]Времени не было прямую ссылу искать - инет у меня не на шару... Так что сорри!
Alx2 (2004-11-19 11:15:00) [2]>msguns © (19.11.04 11:03) [11]
Вот здесь оригинал.
http://delphibase.endimus.ru/?action=viewfunc&topic=filenames&id=10257
>Dimaxx © (19.11.04 00:17) [9]
Зачем же так?
msguns (2004-11-19 11:03:00) [3]>Dimaxx © (19.11.04 00:17) [9]
Ужас !!! Я не об алгоритме, а о стилистике письма: ни отступов, ни комментариев. Где циклы внешние, где внутренние - хрен разберешь ! Лесоповал !!!
Сугубо ИМХО.
main (2004-11-19 08:19:00) [4]Большое спасибо всем!!! Буду разбираться
Dimaxx (2004-11-19 00:17:00) [5]Вот нарыто из своей копилки-свалки:
Перевод списка файлов/каталогов из TStringList в TreeView с построением "дерева каталогов".
Прислал:
Радионов Алексей (Alx2) (Ульяновск) ( 3 июля 2002 г. )
© Alx2
Не тестировано
Описание:
Иногда бывает нужно построить "дерево каталогов" по заданному списку файлов и папок (причем физически эти файлы и каталоги могут не существовать). Представляемый здесь код занимается именно этим.
Зависимости:
sysutils, classes, comctrls
Ограничения:
D5, D6
Исходный текст:
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Перевод списка файлов/каталогов из TStringList в TreeView с построением "дерева каталогов"
Иногда бывает нужно построить "дерево каталогов" по заданному списку файлов и папок (причем физически эти файлы и каталоги могут не существовать). Представляемый здесь код занимается именно этим.
Зависимости:
sysutils, classes, comctrls
Автор: Радионов Алексей (Alx2), alx@argo.mv.ru, ICQ:113442587, Ульяновск
Copyright: Alx2
Дата: 3 июля 2002 г.
***************************************************** }
procedure FillTreeViewWithFiles(TreeView1 : TTreeView; Strs : TStringList);
Var
CachedStrs: TStringList; // CachedStrs вводится для ускорения поиска
// в уже готовом дереве.
Procedure AddItem(Lev: Integer; ParentNode: TTreeNode; S: String);
Function FindNodeWithText(AParent: TTreeNode; Const S: String): TTreeNode;
Var
K : Integer;
fStr : String;
tmpNode: TTreeNode;
Begin
Result := Nil;
fStr := S + IntToStr(Integer(AParent));
K := CachedStrs.IndexOf(fStr);
If K > -1 Then
Result := Pointer(CachedStrs.Objects[K])
Else
Begin
If AParent <> Nil Then
tmpNode := AParent.getFirstChild
Else
tmpNode := TreeView1.Items.GetFirstNode;
While tmpNode <> Nil Do
Begin
If tmpNode.Text = S Then
Begin
Result := tmpNode;
CachedStrs.AddObject(fStr, Pointer(tmpNode));
break;
End;
tmpNode := tmpNode.getNextSibling;
End;
End
End;
Var
prefix: String;
ID : Integer;
aNode : TTreeNode;
Begin
If S = '' Then Exit;
ID := Pos('\', S);
prefix := '';
If ID > 0 Then
prefix := Copy(S, 1, ID - 1)
Else
Begin
prefix := S;
S := '';
End;
aNode := FindNodeWithText(ParentNode, prefix);
If aNode = Nil Then
Begin
aNode := TreeView1.Items.AddChild(ParentNode, prefix);
End;
AddItem(Lev + 1, aNode, Copy(S, ID + 1, Length(S)));
End;
Var K: Integer;
Begin
CachedStrs := TStringList.Create;
CachedStrs.Duplicates := dupIgnore;
CachedStrs.Sorted := True;
Try
TreeView1.Items.BeginUpdate;
TreeView1.SortType := stNone;
For K := 0 To Strs.Count - 1 Do
AddItem(0, Nil, Strs[K]);
Finally
TreeView1.Items.EndUpdate;
CachedStrs.Free;
End;
End;
Пример использования:
// Построим, например, "дерево каталогов" по трем файлам:
procedure TForm1.Button1Click(Sender: TObject);
Var Strs : TStringList;
begin
Strs := TStringList.Create;
try
Strs.Add('D:\Program Files\Borland\Delphi6\Source\Vcl\Printers.dcu');
Strs.Add('D:\Program Files\Borland\Delphi6\Source\Vcl\WinHelp.dcu');
Strs.Add('C:\WINNTS\system\BORLNDMM.DLL');
FillTreeViewWithFiles(TreeView1,Strs);
finally
Strs.Free;
end;
end;
Amoeba (2004-11-18 11:48:00) [6]А еще есть (если надо что покруче и побольше) бесплатная библиотека ShellShock:
http://sourceforge.net/projects/tpshellshock/
Игорь Шевченко (2004-11-18 11:26:00) [7]
> А можно примерчик, плиз
Program Files\Borland\Delphi\Demos\Doc\FilmanEx\*.*
Alx2 (2004-11-18 10:22:00) [8]>main (18.11.04 10:10)
У одного компонента есть свойство, в котором можно его соединить с другим компонентом
ЮЮ (2004-11-18 10:17:00) [9]TOpenDialog
main (2004-11-18 10:10:00) [10]Нужно реализовать что-то наподобие Проводника Виндос. В делфи есть 2 компонента: DirectoryOutline и FileList. Как их объединить в одно - чтобы показывал и директории и файлы
Anatoly Podgoretsky (2004-11-18 09:38:00) [11]А местный FAQ гадость?
main (2004-11-18 09:23:00) [12]А можно примерчик, плиз
ЮЮ (2004-11-18 09:16:00) [13]написанием её кода, естественно :)
FindFirst + Example - сканирование директории