Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Количество файлов в папке   Найти похожие ветки 

 
=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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
1-1173084497
Aleksandr.
2007-03-05 11:48
2007.04.29
Как строку даты/времени в формате ISO превратить в TDateTime?


15-1175472535
Германн
2007-04-02 04:08
2007.04.29
Впервые вижу такую пустоту на форуме!?


3-1171365336
DelphiLexx
2007-02-13 14:15
2007.04.29
Экспортирование данных из DBF


2-1176126598
vitv
2007-04-09 17:49
2007.04.29
Многострочный DBGrid, поиск информации


15-1175354004
User454531
2007-03-31 19:13
2007.04.29
Чемпионат по поиску в Интернете