Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
9th
Фев
Узнать общее количество файлов в заданой папке
Posted by Chas under Delphi
Мне нужно узнать общее количество файлов в заданой папке. Папка может иметь вложение папки с файлами, ети файли тоже должны считаться.
Serge_Bliznykov
вот, когда-то использовал для своих целей (если что — подправите для себя)
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.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)