Главная страница
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.52 MB
Время: 0.016 c
2-1191162447
Pacific
2007-09-30 18:27
2007.10.21
idftp


15-1190563931
ProgRAMmer Dimonych
2007-09-23 20:12
2007.10.21
Поддскажите, плз, самое простое и быстрое решение...


4-1176893124
Иван16
2007-04-18 14:45
2007.10.21
Перехват вызова модального окна


2-1190714903
zzzz
2007-09-25 14:08
2007.10.21
Узнать редактировался ли столбец


1-1186570029
DmitrichJ
2007-08-08 14:47
2007.10.21
Excel: перечисление всех страничек. Как?