Главная страница
    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.47 MB
Время: 0.013 c
14-1126952615
Piter
2005-09-17 14:23
2005.10.09
Ничего себе парень отжигает...


2-1125376577
злобная танька
2005-08-30 08:36
2005.10.09
StringGrid


3-1124636444
fedor
2005-08-21 19:00
2005.10.09
IBDataset и аггрегатные функции


4-1123941644
TheGUEST
2005-08-13 18:00
2005.10.09
Создание патча


4-1123694266
NightLord
2005-08-10 21:17
2005.10.09
Окна в Windows e





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский