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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FindFirst c faDirectory, FindNext возвращает имена файлов 
V
    Опции темы
samsamich
Дата 4.3.2010, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.3.2010

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



Доброго времени суток. Вызываю FindFirst с такими параметрами:
Код

FindFirst('c:\*.*',faDirectory,sr)

FindNext выдает и файлы и папки.. Если FindFirst вызывать не для корня диска то все нормально.. Кто-нибудь сталкивался?
D7, WinXP..
PM MAIL   Вверх
Bitter
Дата 5.3.2010, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: нет
Всего: 27



пиши после FindFirst проверку: if sr.Attr=faDirectory then
PM MAIL ICQ Skype   Вверх
Matematik
Дата 5.3.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 7
Всего: 50



Цитата(samsamich @  4.3.2010,  10:30 Найти цитируемый пост)
Если FindFirst вызывать не для корня диска то все нормально

Не для корня будет тоже самое.
Реализация FindFirst не очень логичная, у многих людей возникали такие же проблемы.
В справке, кстати, про это написано
http://translate.google.ru/#en|ru|The%20At...ter%3A%20%0A%0A

Цитата(Bitter @  5.3.2010,  10:19 Найти цитируемый пост)
if sr.Attr=faDirectory then 

Неправильно.
Надо
Код

FindFirst('c:\*.*',faAnyFile,sr) // иначе в результат не попадут скрытые и системные директории
//---
// проверять надо установленый флаг faDirectory,
// при =faDirectory, if не пройдет для скрытых/системныех директорий
if (ssr.Attr and faDirectory)<>0) and (ssr.Name<>'..') and (ssr.Name<>'.') then


Это сообщение отредактировал(а) Matematik - 5.3.2010, 12:06
PM MAIL WWW ICQ   Вверх
samsamich
Дата 5.3.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.3.2010

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



Спасибо, про нелогичнось FindFirst уже догадался.. А в некорневой папке у меня просто файлов не было smile
PM MAIL   Вверх
Proxin
Дата 6.3.2010, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 363
Регистрация: 21.6.2008

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



Код

var sr:tsearchrec;
begin
if findfirst('C:\*.*' ,0,sr)=0 then
repeat
if (sr.attr=faanyfie and fadirectory) and (sr.name<>'.') and (sr.name<>'..') then //do what u want
until findnext(sr)<>0;
end;


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.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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