Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
11-1107935465
Barloggg
2005-02-09 10:51
2005.10.09
Как узнать тип родителя?


8-1116314243
Ш-К
2005-05-17 11:17
2005.10.09
"Неактивная" пиктограмма


9-1110992003
[wl]
2005-03-16 19:53
2005.10.09
Кто нить пишет игрушки для мобильников?


1-1126715898
GanibalLector
2005-09-14 20:38
2005.10.09
Hint-ы и Warning-и


8-1111810698
wlf
2005-03-26 07:18
2005.10.09
Экспорт в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский