Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какой смысл указывать атрибуты файлов в FindFirst? [D6]


Игорь ©   (2004-06-16 14:13:00) 

Какой смысл указывать атрибуты файлов в FindFirst, если она
так или иначе игнорирует этот параметр и потом приходится выполнять проверку
атрибутов файла?

Например, мне нужно найти все файлы .txt на диске C с атрибутом
"Архивный" и поместить имена найденых файлов в Memo. Я пишу:

var

SR:TSearchRec;

begin

if FindFirst('c:\*.txt', faArchive, SR) = 0 then

repeat

Memo1.Lines.Append(SR.Name)

until FindNext(SR) <> 0;

FindClose(SR);

end;

В результате получаю весь список файлов txt даже если они не
соответсвуют заданому атрибуту faArchive. Значит приходится
делать проверку:

if (SR.Attr and faArchive) = SR.Attr then Memo1.Lines.Append(SR.Name);

Тогда какая разница какие атрибуты задавать faArchive или faAnyFile ?
Только потому, что это обязательный параметр функиции, так что ли выходит?


Anatoly Podgoretsky   (2004-06-16 17:02:00) [1]

Естественно, если тебе нужны файлы с определенными аттрибутами, то придется проверять, но зато можно с помощью этого отфильтровать не нужное, например не нужны каталоги не указывай аттрибут.


Игорь   (2004-06-16 16:36:00) [2]

>Anatoly Podgoretsky ©   (16.06.04 16:06) [8]
>Игорь   (16.06.04 15:30) [6]
>Ты неправильно поинмаешь, за это время мог бы посмотреть справку
>Не только, а плюс и эти

Значит возвращаемся к вопросу #1.
Выходит дело, что faArchive и др. аналогичны константе faAnyFile и без
проверки не обойтись.


Anatoly Podgoretsky   (2004-06-16 16:06:00) [3]

Игорь   (16.06.04 15:30) [6]
Ты неправильно поинмаешь, за это время мог бы посмотреть справку
Не только, а плюс и эти


ЮрийК   (2004-06-16 15:55:00) [4]

Странно:
Если это баг, то почему так долго не обнаруживали?

Пользуйся АПИ функциями. Возвращаются все файлы по маске, а дальше по атрибутам выцепляешь нужные.


Игорь   (2004-06-16 15:30:00) [5]

Сейчас попробовал так:
faReadonly+faHidden

на диске С есть 4 .txt файла: на 2 из них установлены атрибуты
"Только чтение" + "Скрытый", а другие 2 с атрибутом "архивный"
В итоге в Memo добавлены все 4 файла.
Может я что-то неправильно понимаю?
Задавая атрибуты в FindFirst faReadonly+faHidden я указываю, что
нужно искать только те файлы на которых установлены эти атрибуты, а
все остальные игнорируются, так? Если да, то в чем тогда дело, что
находятся все .txt не имеющие отношение к скрытым и реадонли?


panov   (2004-06-16 15:25:00) [6]

>ЮрийК ©   (16.06.04 15:14) [4]

Какой исходник, ГДЕ?

FindFirst/FindNext в SysUtils.pas


ЮрийК   (2004-06-16 15:14:00) [7]

Какой исходник, ГДЕ?


panov   (2004-06-16 14:54:00) [8]

Посмотри исходник.


Игорь   (2004-06-16 14:22:00) [9]

Легко! Только что проверил, задав faArchive и установив одному txt атрибут только чтение. Без проверки он был добавлен в список со всеми остальными!


Anatoly Podgoretsky   (2004-06-16 14:15:00) [10]

Для того чтобы получить и файлы с дополнительными атрибутами, посмотрю я как ты получишь реадонли файлы без этого атррибута.


Наверх

Титульная страница Поиск, карта сайта Написать письмо