Вниз
Скачать: CL | DM;

Функция количества файлов   Найти похожие ветки 

 
Tirops   (2005-08-27 07:45) [0]

Есть ли в Delphi встроенная функция подсчета количества файлов в директории?


 
TUser ©   (2005-08-27 08:25) [1]

Нету. Используй FindFirst/FindNext.


 
Tirops   (2005-08-27 10:11) [2]

Почему-то не получается использовать. До пяти файлов считает правильно, но, например, шесть файлов считает опять как пять. Почему?


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;


 
Kot Andrei ©   (2005-08-27 10:33) [3]

Судя по всему у тебя в этой директории и есть пять файлов, потому что у меня твоя функция считает отлично...


 
MBo ©   (2005-08-27 10:36) [4]

Для чего в цикле дважды вызывается FindNext?


 
begin...end ©   (2005-08-27 11:25) [5]

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.


 
Big Joe ©   (2005-08-27 12:47) [6]

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 12:49) [7]

> Big Joe ©   (27.08.05 12:47) [6]

> if (SR.Attr <> faDirectory) then

Ой.


 
Big Joe ©   (2005-08-27 12:53) [8]

> begin...end ©   (27.08.05 12:49) [7]
> ой ой ой


 
Tirops   (2005-08-27 14:58) [9]


> begin...end

Спасибо, функция работает отлично. Только можно для общего развития - а как это работает? Имеется в виду эта строчка:
if SR.Attr and faDirectory = 0 then...
Как идет перечисление файлов?


> Big Joe

Тоже огромное спасибо, процедура также отлично считает. Только тоже непонятно, как она переходит на следующий файл?


 
Tirops   (2005-08-27 15:06) [10]

Простите, можно не отвечать - все понял... :)))
СПАСИБО!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.047 c
1-1126877611
Новичок1
2005-09-16 17:33
2005.10.09
Народ помогите замучился искать , исправил что-то в свойствах


14-1126707015
Prohodil Mimo
2005-09-14 18:10
2005.10.09
Радуйтесь! я на клаву наклейки повесил :о)


3-1124706356
mmms
2005-08-22 14:25
2005.10.09
Что есть самое дешевое в линейке MSSQL?


14-1127011917
Body
2005-09-18 06:51
2005.10.09
Физика


4-1123039417
fmf
2005-08-03 07:23
2005.10.09
Как передать дату в чужое приложение?




   Наверх