![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция количества файлов [D6, WinXP]
Tirops © (2005-08-27 07:45:00)Есть ли в Delphi встроенная функция подсчета количества файлов в директории?
Tirops (2005-08-27 15:06:00) [1]Простите, можно не отвечать - все понял... :)))
СПАСИБО!
Tirops (2005-08-27 14:58:00) [2]
> begin...end
Спасибо, функция работает отлично. Только можно для общего развития - а как это работает? Имеется в виду эта строчка:
if SR.Attr and faDirectory = 0 then...
Как идет перечисление файлов?
> Big Joe
Тоже огромное спасибо, процедура также отлично считает. Только тоже непонятно, как она переходит на следующий файл?
Big Joe (2005-08-27 12:53:00) [3]> begin...end © (27.08.05 12:49) [7]
> ой ой ой
begin...end (2005-08-27 12:49:00) [4]> Big Joe © (27.08.05 12:47) [6]
> if (SR.Attr <> faDirectory) then
Ой.
Big Joe (2005-08-27 12:47:00) [5]procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\WINDOWS\', ListBox1.Items);
end;
begin...end (2005-08-27 11:25:00) [6]function GetFilesCount(const Dir: string): Cardinal;
var
SR: TSearchRec;
begin
Result := 0;
if FindFirst(Dir + '\*.*', faAnyFile, SR) = 0 then
try
repeat
if SR.Attr and faDirectory = 0 then
Inc(Result)
until FindNext(SR) <> 0
finally
FindClose(SR)
end
end.
MBo (2005-08-27 10:36:00) [7]Для чего в цикле дваждывызывается FindNext?
Kot Andrei (2005-08-27 10:33:00) [8]Судя по всему у тебя в этой директории и есть пять файлов, потому что у меня твоя функция считает отлично...
Tirops (2005-08-27 10:11:00) [9]Почему-то не получается использовать. До пяти файлов считает правильно, но, например, шесть файлов считает опять как пять. Почему?
procedure Count;
var
i:integer;
sr : TSearchRec;
begin
if FindFirst('Files\*.*',faAnyFile,sr) = 0
then
begin
i:=1;
repeat
FindNext(sr);
i:=i+1;
until
FindNext(sr)<>0;
end;
Showmessage(inttostr(i));
FindClose(sr);
end;
TUser (2005-08-27 08:25:00) [10]Нету. Используй FindFirst/FindNext.