Главная страница
    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.47 MB
Время: 0.029 c
3-1076274304
ser_ega
2004-02-09 00:05
2004.03.28
Database Desktop


14-1078222874
Zergling
2004-03-02 13:21
2004.03.28
Чудило-продавцы :)


1-1078946762
Lena19
2004-03-10 22:26
2004.03.28
DLL точка входа не найдена


1-1078469313
WondeRu
2004-03-05 09:48
2004.03.28
ShellExecute "кушает" память))


14-1077699004
race1
2004-02-25 11:50
2004.03.28
xp lan





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский