Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.02 c
8-1069178308
Serg
2003-11-18 20:58
2004.03.28
Как закрыть окно после проигрывания mpeg файла?


14-1078218503
Cobalt
2004-03-02 12:08
2004.03.28
Интересный проект - неинтересный проект


1-1078824439
fatal
2004-03-09 12:27
2004.03.28
Рисовать на рабочем столе


8-1069034807
Asteroid
2003-11-17 05:06
2004.03.28
И опять задержки в waveOutWrite


1-1078865639
SeriousSam
2004-03-09 23:53
2004.03.28
Как сделать что бы в StringGrid e по команде выделялся...