Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.24;
Скачать: CL | DM;

Вниз

Как найти папку по маске?   Найти похожие ветки 

 
lipskiy ©   (2003-04-15 01:52) [0]

Если в имени файла при определении существования (FileExists) звездочки и вопросики воспринимаются как маска, то в имени папки (DirectoryExists) это не работает почему-то.
Как можно определить, существет ли папка, если я точно знаю путь, за исключением последнего нижнего уровня, имя которого мне известно лишь частично. Применение FindFirst и FindNext крайне нежелательно, так как папок очень много (может достигать десятка тысяч), и процесс сканирования займет много времени. Необходимо определить быстро. Есть такая возможность?


 
Palladin ©   (2003-04-15 01:59) [1]

глупость...

если тебя интересует существует папка отвечающая заданой маске тебе совсем не обязательно пробегать всем папкам
достаточно лишь один раз вызвать FindFirst....


 
Palladin ©   (2003-04-15 02:05) [2]

хм...
прошу прощенья
не один раз, а пока не встретишь директорию проверяя аттрибуты ручками...


 
А123   (2003-04-15 02:36) [3]

Чё-то очень маловероятно, что найти папку без "сканирования" возможно.


 
lipskiy ©   (2003-04-15 09:19) [4]

черт, это я затупил, прошу прощения, поздновато было. Конечно же, FindFirst все и решает, поскольку он то маску понимает :) И зачем атрибуты ручками проверять? Ведь в параметрах FindFirst я могу задать fadirectory, разве этого недостаточно? У меня вроде работает, может я что-то все таки некорректно сделал:

if FindFirst(Path + "????_??_????_" + Sample,faDirectory,srec) = 0 then continue;

где Path - известный путь к папкам для поиска, Sample - известный фрагмент имени папки.


 
Palladin ©   (2003-04-15 09:41) [5]

нет ты не прав...
по поводу директорий надо ручками проверять...


 
Smithson ©   (2003-04-15 10:09) [6]

faDirectory - это файл у которого этот атрибут или есть, или нет.
Отсутсвие атрибута - файл, у которого его нет.


 
Sheriff   (2003-04-15 10:32) [7]

а так:
if GetFileAttributes("c:\borland\delphi5")=FILE_ATTRIBUTE_DIRECTORY then showmessage("ok");


 
han_malign ©   (2003-04-15 10:56) [8]

Еще раз повторю сказанное выше по подробней:

> FindFirst(Path + "????_??_????_" + Sample,faDirectory, srec)

The Attr parameter specifies the special files to include in addition to all normal files.

так что до первого ( srec.FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)<>0 (для Windows)

З.Ы. Как показывает практика, обычно, FindFirstFile(а именно он и используется в FindFirs под must die) сначала находит как раз каталоги, но я периодически дефрагментируюсь Norton SpeedDisk, с флажком "папки в начало", так что на это забиваться не стоит. Сканирование довольно шустрое (а как, по вашему, explorer вам каталоги показывает), так что не болезненно.



Страницы: 1 вся ветка

Текущий архив: 2003.04.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-77153
Opera
2003-04-09 02:04
2003.04.24
Player на TMediaPlayer


1-76953
Pitay
2003-04-12 17:56
2003.04.24
Создание компонент во время работы проложения


14-77110
VAleksey
2003-04-07 09:18
2003.04.24
Комната квартира в Москве


7-77204
Andy BitOff
2003-03-08 19:48
2003.04.24
Раскладка клавиатуры


14-77162
kofman
2003-04-04 22:09
2003.04.24
Вопрос про почту