Главная страница
    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.047 c
15-1190676026
SerJaNT
2007-09-25 03:20
2007.10.21
Программа для блокировки компьютера


15-1190403271
korneley
2007-09-21 23:34
2007.10.21
Отсутствуют "Последние 10 сообщений на форумах"


3-1176821654
Kostafey
2007-04-17 18:54
2007.10.21
Обновление значений полей взятых из присоединенной таблицы


11-1174343845
finder2007
2007-03-20 01:37
2007.10.21
Как сортировать узлы в TreeView ?


15-1190184119
pavel_guzhanov
2007-09-19 10:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский