Возник очень интересный вопрос (по работе с каталогами)
Начал работать над одной прогой, и тут же встала проблемка (правда решена, но все же интересно) при сканировании каталога на подкаталоги при помощи функций FindFirst(), FindNext() почему-то не хватает одной константы (я так думаю). faDirectory имеет значение 16, но есть еще одна константа 48 которая тоже является каталогом, но про неё в модуле SysUtils ничего не сказано, она даже не объявлена хотя работает. Почему так???
48 = 110000 (bin)
5 бит функции FindXXX скорее всего не распознают, т. о. получается faDirectory. Попробуй еще 112, скорее всего получится тоже самое.
Что значит "не объявлена"?
Пши не =faDirectory, а and faDirectory<>0
в таком случае будут искаться все файлы, исключая каталоги.
[QUOTE=makbeth]
По умолчанию
16 = 10000 (bin)
48 = 110000 (bin)
5 бит функции FindXXX скорее всего не распознают, т. о. получается faDirectory. Попробуй еще 112, скорее всего получится тоже самое.
[/QUOTE]
эту то проблему я решил, просто объявил новую константу = 48, а что означает 112, тоже константа папки?
ибо флаги FindNext проверяет как показал wanja
а and faDirectory = a and 16 = a and 48 = a and 112 = .....
Т.е. неважно какое число, главное чтобы 4ый бит у него был 1. Это кстати и числа 49, 113 - да сколько угодно.
Итак, твоя магическая константа 48 означает всего лишь:
Код:
faDirectory or faArchive
т.е. папка с атрибутом "архивная".
Соответственно 112 будет означать:
Код:
faDirectory or faArchive or faSymLink
т.е. символическая ссылка NTFS на папку с атрибутом "архивная".
Список атрибутов: "Архивный", "Только для чтения", "Скрытый", "Системный", "Каталог", "Метка тома" - ещё два бита были зарезервированны под нужды, которые по сей день ещё не придумали.
Вышеприведённые константы - это значения, в которых один из битов равен true. Соотвественно, "faDirectory or faArchive or faSymLink" - с математической точки зрения эквивалентно "faDirectory + faArchive + faSymLink" - это число, в котором требуемые биты будут равны true, а все прочие - false.
ну все всем спасибо, вопрос исчерпан!!