![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#7
|
||||
|
||||
|
DJ PhoeniX Спасибо, получилось.
Только добавил '\' Код:
inc(Result,FileCount(Dir+ '\'+fs.name)); и объявление Код:
function FileCount(Dir: string): integer; forward; ненужно (Это я как понимаю для Delphi ниже 8) ![]() |