Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Дерево каталогов в TMemo Найти похожие ветки
← →
Norfolk © (2004-03-04 20:00) [0]Доброго времени суток уважаемые мастера,
Вопрос собственно такой:
Как загрузить дерево каталогов какого-либо диска в TMemo? Прошу поделиться мыслями.
Заранее спасибо.
← →
Gero © (2004-03-04 20:06) [1]Дерево в Memo? Интересная идея.
А что именно Вам не понятно - как получить список файлов или как это поместить в виде дерева в Memo?
← →
Norfolk © (2004-03-04 20:10) [2]Скорее как получить список. Разместить его в Мемо я думаю не составит особого труда.
← →
Тимохов © (2004-03-04 20:12) [3]
>
> Norfolk © (04.03.04 20:10) [2]
Стандартный ответ на нестандартный вопрос
FindFirst,FindNext,FindClose + f1.
Там даже примеры есть.
← →
Defunct © (2004-03-04 21:15) [4]Ээээ... хочу предложить немного нестандартный подход к сканированию каталогов, отличается от приведенного Юрием Зотовым (ScanDir не помню в какой ветке) тем, что следующий каталог для поиска выбирается из глобального списка найденных каталогов, который формируется в объекте TMemo.
Получается поуровневое сканирование, что нельзя получить при обычном рекурсивном обходе каталогов.
Вот сам код:Procedure TForm1.ScanDirMemoBased;
Var SearchRec : TSearchRec;
SearchError,Attr,CurrentDir : Integer;
Dir : String;
Begin
CurrentDir := 0;
GetDir(0, Dir);
Dir := ExtractFileDrive(Dir)+"";
Memo1.Lines.Clear;
Memo1.WordWrap := False;
Memo1.ScrollBars := ssHorizontal;
Memo1.Lines.Add(Dir);
Repeat
Try
Dir := Memo1.Lines.Strings[CurrentDir];
If Length(Dir)=2 Then ChDir(Dir+"\")
Else ChDir(Dir);
Except
ShowMessage(PChar(Dir + " access denied"));
End;
SearchError := FindFirst("*.*", faAnyfile, SearchRec);
While SearchError=0 Do
Begin
Attr := SearchRec.Attr And faDirectory;
If (Attr = faDirectory) And
(SearchRec.Name<>"..") And (SearchRec.Name<>".") Then
Memo1.Lines.Add( Dir + "\" + SearchRec.Name );
SearchError := FindNext( SearchRec );
End;
FindClose(SearchRec);
Inc(CurrentDir);
Until CurrentDir=Memo1.Lines.Count;
ShowMessage(Format("Всего каталогов найдено: %d", [CurrentDir]));
End;
Использовать так:procedure TForm1.Button1Click(Sender: TObject);
begin
ScanDirMemoBased;
End;
← →
Soft © (2004-03-04 22:03) [5]А чем вам TTreeView не нравится? Зачем вам Memo?
← →
Юрий Зотов © (2004-03-04 22:33) [6]> Soft © (04.03.04 22:03) [5]
Наверное, слишком просто.
← →
Гаврила (2004-03-04 22:39) [7]>>Defunct © (04.03.04 21:15) [4]
>> Except
>> ShowMessage(PChar(Dir + " access denied"));
>> End;
извините, но это ересь
← →
Defunct © (2004-03-04 23:24) [8]Soft © (04.03.04 22:03) [5]
Юрий Зотов © (04.03.04 22:33) [6]
Читаем САБЖ, я тут не причем. И не надо издеваться за над тем, что я специально потратил свое время подготовив пример для этого вопроса.
Гаврила (04.03.04 22:39) [7]
> извините, но это ересь
Для Вас может и ересь, приглядитесь к чему относится этот Except, хотя лично мне Ваше мнение не интересно, а спорить нет ни времени, ни желания.
← →
Юрий Зотов © (2004-03-04 23:33) [9]> Defunct © (04.03.04 23:24) [8]
> Читаем САБЖ, я тут не причем.
Дык... а кто же спорит-то? Речь и шла о сабже, а не о Вас.
← →
Norfolk © (2004-03-05 12:56) [10]
> Soft © (04.03.04 22:03) [5]
> А чем вам TTreeView не нравится? Зачем вам Memo?
Тем, что его недо сохранять в текстовый файл.
← →
Юрий Зотов © (2004-03-05 13:00) [11]> Norfolk © (05.03.04 12:56) [10]
TTreeView.SaveToFile - тоже не нравится?
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.029 c