Главная страница
    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-76779
mcArena
2003-04-04 15:20
2003.04.24
Как включить в модальное окно из dll датасорс из главной формы


6-77062
Злодей
2003-03-01 19:11
2003.04.24
Disconnect


1-76938
Артём
2003-04-11 20:49
2003.04.24
Как создать компонент во время выполнения программы


7-77213
Alik
2003-03-02 17:23
2003.04.24
Две клавы к системнику


1-76890
Гость
2003-04-14 07:37
2003.04.24
Сравнить два LIstBox.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский