Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
3-76810
Max79
2003-04-04 09:50
2003.04.24
Отображение логического поля в DBGrid


7-77210
Андрусь
2003-03-05 10:26
2003.04.24
выставить/отменить для окон перерисовку при перетаскивании


14-77127
Feel
2003-04-07 20:44
2003.04.24
WinAPI


4-77224
igornov
2003-02-26 18:00
2003.04.24
Как зная хендл процесса найти главное окно приложения или наоборо


14-77108
Supreme 2
2003-04-06 23:14
2003.04.24
Так как бы всё-таки прославиться???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский