Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функция количества файлов [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо