Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Список файлов и папок.   Найти похожие ветки 

 
Nikfel ©   (2007-09-27 13:48) [0]

Подскажите пожалуйста. Как получить список папок и вывести в memo1, и получит список файлов и вывести в memo2. Мне только нужно получить список файлов или папок. Желательно бы найти самый быстрый вариант. Заранее спасибо.


 
Kolan ©   (2007-09-27 13:51) [1]

Пользовайся:


 
Kolan ©   (2007-09-27 13:51) [2]

procedure TPluginLoader.ScanDirectory(Directory: string;
 ScanSubFolders: Boolean; Strings: TStrings; Extension: string;
 FileName: string; RecursionCount: Integer);
var
 CurrentFile: TSearchRec;
begin
 Directory := IncludeTrailingPathDelimiter(Directory);
 if Assigned(Strings) and DirectoryExists(Directory) then
 begin
   try
     if FindFirst(Directory + "*.*", faAnyFile, CurrentFile) = 0 then
     begin
       repeat
         if (CurrentFile.Name <> ".") and (CurrentFile.Name <> "&#133") then
         begin
           if ((CurrentFile.Attr and faDirectory) <> 0) and ScanSubFolders then
             ScanDirectory(Directory+CurrentFile.Name, ScanSubFolders, Strings,
               Extension, FileName, RecursionCount + 1);
            if (Extension = "") or (ExtractFileExt(CurrentFile.Name) = Extension) then
              if (FileName = "") or (FileName = CurrentFile.Name) then
               Strings.Add(Directory+CurrentFile.Name)
         end;
       until FindNext(CurrentFile) <> 0;
     end;
   finally
     FindClose(CurrentFile);
   end;
 end;
end;


 
Nikfel ©   (2007-09-27 13:55) [3]

Спасибо. Проверю.


 
{RASkov} ©   (2007-09-27 15:06) [4]

> [0] Nikfel ©   (27.09.07 13:48)
> Как получить список папок и вывести в memo1, и получит список файлов и вывести в memo2
> Желательно бы найти самый быстрый вариант

А обязательно Memo нужны? Например ListBox"ы - не подойдут?


 
Kolan ©   (2007-09-27 15:11) [5]

> Спасибо. Проверю.

Пользоваться так:

var
 Strings: TStrings;
begin
 Strings : TStringList.Create;
 try  
   ScanDirectory("C:\", False, Strings, "", "", 0);
   Memo1.Lines.Text := Strings.Text;
 finally
   Strings.Free;
 end;
end;


 
{RASkov} ©   (2007-09-27 15:13) [6]


> [5] Kolan ©   (27.09.07 15:11)

А почему не так:
begin
 ScanDirectory("C:\", False, Memo1.Lines, "", "", 0);
end;

? :)


 
Джо ©   (2007-09-27 15:14) [7]

> [5] Kolan ©   (27.09.07 15:11)
> > Спасибо. Проверю.
>
> Пользоваться так:
>
> var
> Strings: TStrings;
> begin
> Strings : TStringList.Create;
> try  
>   ScanDirectory("C:\", False, Strings, "", "", 0);
>   Memo1.Lines.Text := Strings.Text;
> finally
>   Strings.Free;
> end;
> end;


А разве не так?
ScanDirectory("C:\", False, Memo1.Strings, "", "", 0);
;)


 
Джо ©   (2007-09-27 15:15) [8]

> [7] Джо ©   (27.09.07 15:14)

> А разве не так?
> ScanDirectory("C:\", False, Memo1.Strings, "", "", 0);
> ;)

Т.е., Lines, конечно.


 
Джо ©   (2007-09-27 15:15) [9]

> [6] {RASkov} ©   (27.09.07 15:13)

О, не один я шибко умный :)


 
Reindeer Moss Eater ©   (2007-09-27 15:29) [10]

SendMessage(ListBox1.Handle,
               LB_DIR,
               DDL_ARCHIVE +
               DDL_DIRECTORY +
               DDL_DRIVES +
               DDL_EXCLUSIVE +
               DDL_HIDDEN +
               DDL_READONLY +
               DDL_READWRITE +
               DDL_SYSTEM,
               Integer(PChar("C:\*.*"))
               );


 
Kolan ©   (2007-09-27 15:35) [11]

> А разве не так?

Хм, и так можно&#133 Почему же я был уверен что он ругнется что-то типа Left side cannot be assigend&#133 странно&#133


 
{RASkov} ©   (2007-09-27 15:54) [12]

> [10] Reindeer Moss Eater ©   (27.09.07 15:29)

А вдруг ему Мемо критично... :)
Ладно... я ему тоже приготовил нечто такое:
procedure GetFileDir(LsFile, LsDir: TCustomListBox; const APath: String);
begin
 LsFile.Perform(LB_DIR, 0, LPARAM(PChar(APath)));
 LsDir.Perform(LB_DIR, DDL_EXCLUSIVE or DDL_DIRECTORY, LPARAM(PChar(APath)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetFileDir(ListBox1, ListBox2, "C:\Temp\*.*");
end;


В справке по DlgDirList есть инфа по параметрам DDL_xxx.....


 
Джо ©   (2007-09-27 15:57) [13]

> [11] Kolan ©   (27.09.07 15:35)
> > А разве не так?
>
> Хм, и так можно… Почему же я был уверен что он ругнется
> что-то типа Left side cannot be assigend… странно…

А где там assignment? :)


 
{RASkov} ©   (2007-09-27 16:03) [14]

> [11] Kolan ©   (27.09.07 15:35)
> странно…

Ничего странного нет.... так как
procedure TPluginLoader.ScanDirectory(....: Boolean; Strings: TStrings; Extension: string.....)
всего лишь указатель....
А смотрим
TCustomMemo = class(TCustomEdit)
.....
property Lines: TStrings read FLines write SetLines;


> что-то типа Left side cannot be assigend…

Это немного не из этой оперы....


 
Kolan ©   (2007-09-27 16:11) [15]

> А где там assignment? :)

Ну я знаю&#133

А если бы было так:
property Lines: TStrings read GetLines write SetLines;

Ругалось бы?


 
{RASkov} ©   (2007-09-27 16:20) [16]

> [15] Kolan ©   (27.09.07 16:11)
> GetLines write SetLines;
>
> Ругалось бы?

А сам как думаешь? :)
Адрес метода от адреса "данных" отличаешь?


 
Kolan ©   (2007-09-27 16:21) [17]

> Адрес метода от адреса &laquo;данных&raquo; отличаешь?

Ну вот, вот у меня и запало что так не получится :)


 
Джо ©   (2007-09-27 17:54) [18]

2 Kolan ©
Ты ведь просто передаешь ссылку на объект. Ничего никуда не присваивается. :)


 
Джо ©   (2007-09-27 17:55) [19]

И абсолютно без разницы, где этот объект находится, в локальном var или возвращается методом-аксессором.


 
Kolan ©   (2007-09-27 18:02) [20]

> А сам как думаешь? :)


> И абсолютно без разницы

Короче проверил:
property Strings: TStrings read GetStrings write SetStrings;
Работает&#133

Хм&#133, странно, откруда тогда у меня эта паранойа.



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
9-1161520353
Тёма
2006-10-22 16:32
2007.10.21
Прозрачность в GLScene


1-1186384502
Dmitry_177
2007-08-06 11:15
2007.10.21
Как сделать ComboBox, чтобы при вводе строки был выбор как в IE


2-1190883807
Lamer666
2007-09-27 13:03
2007.10.21
Если компонент в DELPHI который бы отрожал все MDIChilde формы?


2-1190573837
Ezorcist
2007-09-23 22:57
2007.10.21
Перевод с delphi на turbo pascal


2-1190782024
savyhinst
2007-09-26 08:47
2007.10.21
Стрелка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский