Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизКоличество файлов в папке Найти похожие ветки
← →
=Guest= (2007-04-07 18:16) [0]В папке www содержится 18 файлов и одна вложенная папка zzz в которой содержится 4 файла.
Мне необходимо посчитать количество файлов в папке и вов всех вложенных в нее папках.
Написал следующий код:function GetFileCount(sPath:string):int64;
var
iFileCount:int64;
Count:integer;
SR:TSearchRec;
begin
iFileCount:=0;
Count:=SysUtils.FindFirst(sPath+"*.*",faAnyFile,SR);
try
while Count=0 do
begin
if (SR.Name<>".")and (SR.Name<>"..") then
begin
if (Sr.Attr and faDirectory)=faDirectory
then GetFileCount(sPath+SR.Name)
else
inc(iFileCount);
end;
Count:=FindNext(SR);
end;
finally
SysUtils.FindClose(SR);
Result:=iFileCount;
end;
end;
но получаю количество файлов 18 подскажите в чем ошибка.
← →
Johnmen © (2007-04-07 18:29) [1]В неуказании \ при получениии имен файлов во вложенной папке.
← →
homm © (2007-04-07 18:36) [2]> В папке www содержится 18 файлов и одна вложенная папка
> zzz в которой содержится 4 файла.
> Мне необходимо посчитать количество файлов в папке и вов
> всех вложенных в нее папках.
22?
← →
homm © (2007-04-07 18:38) [3]а если серьезно, нужно исправить
if (Sr.Attr and faDirectory)=faDirectory
then GetFileCount(sPath+SR.Name)
else
inc(iFileCount);
наif (Sr.Attr and faDirectory)=faDirectory
then iFileCount := iFileCount + GetFileCount(sPath+SR.Name)
else
inc(iFileCount);
← →
Anatoly Podgoretsky © (2007-04-07 18:43) [4]> =Guest= (07.04.2007 18:16:00) [0]
И где у тебя сложение?
← →
=Guest= (2007-04-07 19:42) [5]homm
if (Sr.Attr and faDirectory)=faDirectory
then iFileCount := iFileCount + GetFileCount(sPath+SR.Name)
else
inc(iFileCount);
По прежнему 18 файлов
> И где у тебя сложение?
Anatoly Podgoretsky F а можно по подробнее как это реализовать?
← →
trubin © (2007-04-07 19:57) [6]
> FindFirst(sPath+"*.*",faAnyFile,SR);
в имени папки у тебя нет точки
FindFirst(sPath+"*",faAnyFile,SR);
← →
=Guest= (2007-04-07 20:00) [7]
> в имени папки у тебя нет точки
исправлено но сути дела это не меняет
← →
homm © (2007-04-07 20:05) [8]> в имени папки у тебя нет точки
Замечено, что винда заменяет аривиатуру «*.*
» на «*
» сама.
> По прежнему 18 файлов
Вот так попробуй:GetFileCount(sPath+"\"+SR.Name)
← →
=Guest= (2007-04-07 20:08) [9]
> Вот так попробуй:
Да я так уже пробовал без результата
> в имени папки у тебя нет точки
Чего то туплю я это маска поиска если сделать скажем *.txt Будет искать только txt файлы
← →
=Guest= (2007-04-07 20:11) [10]пробовал добавить в код следующее
if (Sr.Attr and faDirectory)=faDirectory
then GetFileCount(sPath+SR.Name)
else
begin
inc(iFileCount);
Form1.ListBox1.Items.Add(SR.Name);
end;
end;
В ListrBox1 отображаются 18 файлов в папке www.
Пробовал пошагово выполнить вообще ерунда какая то получается
← →
homm © (2007-04-07 20:22) [11]> [10] =Guest= (07.04.07 20:11)
> пробовал добавить в код следующее
> if (Sr.Attr and faDirectory)=faDirectory
> then GetFileCount(sPath+SR.Name)
> else
Это тупиковый вариант! Тебе нужно к текущему количеству файлов прибавлять из подпапок, а ты этого не делаешь.if (Sr.Attr and faDirectory)=faDirectory
then iFileCount := iFileCount + GetFileCount(sPath+SR.Name)
← →
=Guest= (2007-04-07 20:22) [12]Все разобрался.
Спасибо всем кто принял участие в обсуждении. Всех с наступающим праздником!!!!
Еще раз огромное спасибо
Тема закрыта
← →
=Guest= (2007-04-07 20:23) [13]homm
Вы правы. Спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c