|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Общее количество файлов в папке, включая вложенные
Здравствуйте !
Вот функция , которая ни как не хочет заглядывать во вложенные папки. Код:
function FileCount(Dir: string): integer; var fs: TSearchRec; label n; begin Result := 0; n: if FindFirst(Dir + '\*.exe', faAnyFile, fs) = 0 then repeat inc(Result); if (fs.Attr and faDirectory) = faDirectory then begin Dir := (Dir+fs.name); goto n; end; until FindNext(fs) <> 0; FindClose(fs); end; Где ошибка ? |
#2
|
||||
|
||||
познакомься с таким понятием, как рекурсия и будет тебе счастье(да и style программирования улучшишь, без всяких там goto))))
|
#3
|
|||
|
|||
Ошибка - а у тебя вложенные папки тоже имеют расширение .exe???
|
#4
|
||||
|
||||
Цитата:
Все правильно, но в случае рекурсии Result := 0; |
#5
|
||||
|
||||
Цитата:
|
#6
|
||||
|
||||
Код:
function FileCount(Dir: string): integer; forward; ... function FileCount(Dir: string): integer; var fs: TSearchRec; begin Result := 0; if FindFirst(Dir + '\*.exe', faAnyFile, fs) = 0 then repeat inc(Result); until FindNext(fs) <> 0; FindClose(fs); if FindFirst(Dir + '\*', faDirectory, fs) = 0 then repeat if fs.name[1] <> '.' then begin inc(Result,FileCount(Dir+fs.name)); end; until FindNext(fs) <> 0; FindClose(fs); end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
||||
|
||||
DJ PhoeniX Спасибо, получилось.
Только добавил '\' Код:
inc(Result,FileCount(Dir+ '\'+fs.name)); и объявление Код:
function FileCount(Dir: string): integer; forward; ненужно (Это я как понимаю для Delphi ниже 8) |