Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
ВнизСписок файлов и папок. Найти похожие ветки
← →
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 <> "…") 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]> А разве не так?
Хм, и так можно… Почему же я был уверен что он ругнется что-то типа Left side cannot be assigend… странно…
← →
{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? :)
Ну я знаю…
А если бы было так: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]> Адрес метода от адреса «данных» отличаешь?
Ну вот, вот у меня и запало что так не получится :)
← →
Джо © (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;
Работает…
Хм…, странно, откруда тогда у меня эта паранойа.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.045 c