Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивный подсчет файлов в папке, и подпапках. Почему бесконечная рек-я? 
V
    Опции темы
Тутанхамец
Дата 23.3.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 1
Всего: 6



Господа!

Вот есть такой код:

Код

procedure TAC.CountFiles(sDir :string);
var
    F:TSearchRec;
    g:integer;
begin
    g:=FindFirst(sdir+'\*',faanyfile,f);
    while g=0 do begin
    if (f.Attr and fadirectory)=fadirectory then countfiles(sdir+'\'+f.name) else  inc(filescount);
    g:=FindNext(f);
    end;
    FindClose(f);
    if assigned(FCountEvent) then countevent(self,filescount);
end;



...который ищет и ищет файлы, причем столько, сколько их в той папке отродясь не бывало. В чем моя ошибка? И что это за '.', которую находит FindNext? Заранее спасибо.

Это сообщение отредактировал(а) Тутанхамец - 23.3.2006, 18:46
PM MAIL   Вверх
smartov
Дата 23.3.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



Цитата(Тутанхамец @ 23.3.2006, 17:46 Найти цитируемый пост)
И что это за '.'

'.' - ссылка на текущую папку
'..' - ссылка на родительскую папку
Само собой оно в бесконечную рекурсию падает.
Отсеивай их.
Добавлено @ 18:50
P.S. И лучше юзай юникодные функции (FindFirstW....) потому, что иначе могут быть проблемы с файлами, у которых в именах встречаются разные нездоровые символы (Например ярлык на флопак - в нем есть символ дроби)
PM MAIL   Вверх
Тутанхамец
Дата 23.3.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 1
Всего: 6



Ага! Теперь ясно.
Спасибо smile

А FindFirstW- где ее взять? Что-то в справке Делфи5 ее не видно. Или ты имеешь в виду APIшную FindFirstFile?
Добавлено @ 18:59
А есть более быстроработающие способы получения информации о файлах в директории?
PM MAIL   Вверх
_hunter
Дата 23.3.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



нету...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
bems
Дата 23.3.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Тутанхамец @ 23.3.2006, 18:55 Найти цитируемый пост)
Или ты имеешь в виду APIшную FindFirstFile?

Ее он и имеет ввиду. Только юникод версия.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Тутанхамец
Дата 23.3.2006, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 1
Всего: 6



А сама Винда гораздо быстрее считает, когда вызываешь окно свойств папки.

Как так? Она выгрызает из директории записи о файлах? Ну дык наверняка FindFirst и пр. делает тоже самое.
Добавлено @ 19:17
Ладно, это уже не критично...

Всем спасибо, вопрос решен. smile
PM MAIL   Вверх
_hunter
Дата 23.3.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



не сказал бы я что быстрее...
+ она, явно, свою службу индексирования узвет...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Тутанхамец
Дата 23.3.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 1
Всего: 6



Скорее службу. Для папки весом в 4 гига разница в скорости в общем-то впечатляет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.