Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 12:28   #1
werder_ua
 
Аватар для werder_ua
 
Регистрация: 16.04.2009
Сообщений: 8
Восклицание Количество файлов в папке.(Delphi)

Помогите пожалуста. Мне нужно узнать общее количество файлов в заданой папке. Папка может иметь вложение папки с файлами, ети файли тоже должны щитатса.
werder_ua вне форума Ответить с цитированием
Старый 19.12.2011, 12:38   #2
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Используйте рекурсивный поиск файлов. FindFirst в поиске наберите и найдете много примеров использования
Xardas вне форума Ответить с цитированием
Старый 19.12.2011, 13:33   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Xardas, +1

вот, когда-то использовал для своих целей (если что - подправите для себя)
Код:
function FilesCountInScanDirectory( cDirName : string) : integer;
var
  lCountResult : integer;
  SearchRec: TSearchRec;
begin
   lCountResult := 0;
   cDirName := IncludeTrailingBackslash(cDirName);
   if (FindFirst( cDirName+'*.*', faAnyFile, SearchRec)=0)
   then begin
       if (SearchRec.Attr and faDirectory)<>0 then begin
         if (Trim(SearchRec.Name)<>'.') and
              (Trim(SearchRec.Name)<>'..') then begin
           lCountResult := FilesCountInScanDirectory(
                             cDirName+SearchRec.Name) + lCountResult;
//           WriteLn('Find directory - ',cDirName+SearchRec.Name);
         end
       end
       else
        lCountResult := lCountResult + 1;
     while FindNext(SearchRec) = 0 do begin
       if (SearchRec.Attr and faDirectory)<>0 then begin
         if (Trim(SearchRec.Name)<>'.') and
              (Trim(SearchRec.Name)<>'..') then begin
           lCountResult := FilesCountInScanDirectory(
                             cDirName+SearchRec.Name) + lCountResult;
//           WriteLn('Find directory - ',cDirName+SearchRec.Name);
         end
       end
       else
        lCountResult := lCountResult + 1;
     end;
   end;
   FindClose(SearchRec);
   Result := lCountResult;
//   if lCountResult = 0 then
//      WriteLn( fLogFile, cDirName, '<?',lCountResult,'?>');
//   WriteLn('---- directory - ',cDirName,'  ',lCountResult);
end;

ещё один вариант может выглядеть так:
Код:
program CountOfFiles1;
{$APPTYPE CONSOLE}
uses SysUtils, Forms;

function  CountOfFiles(Dir: string) : integer;
var
  lResult : integer;
  SearchRec: TSearchRec;
begin
  Dir := IncludeTrailingBackslash(Dir);
  lResult := 0;

  if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
      Application.ProcessMessages;

      if (SearchRec.Attr and faDirectory) <> 0 then begin
        if (SearchRec.name <> '.') and (SearchRec.name <> '..') then
              lResult := lResult +  CountOfFiles(Dir + SearchRec.name);
      end
      else
        Inc(lResult);
    until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
  CountOfFiles := lResult;

end;

// пример использования
const
  InitDir = 'C:\KAV\';

begin
  WriteLn(' In folder '+InitDir+ ' ', CountOfFiles(InitDir),' file(s).' );
  Readln
end.

Последний раз редактировалось Serge_Bliznykov; 19.12.2011 в 14:32.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывести список всех файлов в папке, delphi paravoz1k Общие вопросы Delphi 1 06.08.2011 17:39
Количество книг в папке Palomnik1096 Microsoft Office Excel 13 12.04.2011 14:58
Узнать количество *.txt файлов в папке Tomazo Общие вопросы Delphi 3 12.11.2009 20:58
Переименование файлов в папке. mr_Smitt Общие вопросы Delphi 1 28.09.2009 17:20
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09