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

Вниз

Поиск файлов по маске   Найти похожие ветки 

 
Sdubaruhnul   (2007-07-29 18:25) [0]

Здравствуйте, Мастера.

Использую для поиска ф-ии API FindFirstFileW и компанию. Как бы лучше организовать поиск файлов по маске, допустим такой: "*.txt; *.doc". Вижу два варианта:

1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:\temp\*.doc".
2. Ищу всё строкой типа "c:\temp\*.*" и далее проверяю найденное на предмет соответствия маске.


 
MsGuns ©   (2007-07-29 20:18) [1]

Однако файловые функции есть для этого, в.ч. и для масок


 
Sdubaruhnul   (2007-07-29 20:49) [2]

>Однако файловые функции есть для этого, в.ч. и для масок

Какие? Важен Unicode.


 
Sdubaruhnul   (2007-07-30 11:22) [3]

Так что, никто не может посоветовать? Как будет быстрее с точки зрения поиска файлов? Не опасно ли передавать длинные строки (ведь может получится из десять путей чёрти что)?

Готовые Дельфийские функции не годятся - они все не-Unicode"ные.


 
Сергей М. ©   (2007-07-30 11:28) [4]


> Готовые Дельфийские функции не годятся - они все не-Unicode"ные


Это какие же ?


 
Sdubaruhnul   (2007-07-30 14:53) [5]

FindFirst, FindNext...


function FindFirst(const Path: string; Attr: Integer;
 var  F: TSearchRec): Integer;

 F.FindHandle := FindFirstFile(PChar(Path), F.FindData);


 
clickmaker ©   (2007-07-30 15:15) [6]


> 1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:\temp\*.doc".
> 2. Ищу всё строкой типа "c:\temp\*.*" и далее проверяю найденное
> на предмет соответствия маске.

а FindFirstFile разве поймет вариант 1?


 
Sdubaruhnul   (2007-07-30 16:07) [7]

>а FindFirstFile разве поймет вариант 1?

Поймёт. Но мне эту строку сначала надо составить, а потом FindFirstFile будет её разбирать. И так нужно составлять для каждой подпапки, если искать всё внутри каталога. Нет, чего-то я склоняюсь ко второму варианту.


 
DVM ©   (2007-07-30 16:12) [8]


> Нет, чего-то я склоняюсь ко второму варианту.

ИМХО 2) удобнее и понятнее. До опр. пределов, конечно.


 
iXT ©   (2007-07-30 17:01) [9]

2 + if is Dir then FindInDir


 
Двигатель внешнего сгорания   (2007-07-31 12:33) [10]


> Sdubaruhnul   (30.07.07 16:07) [7]
> >а FindFirstFile разве поймет вариант 1?

Поймёт.


Откуда такая информация?


> 1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:
> \temp\*.doc".2. Ищу всё строкой типа "c:\temp\*.*" и далее
> проверяю найденное на предмет соответствия маске.


Второй вариант однозначно.
Стандартные функции так и работают: Перебор всех файлов и проверка соответствия маске.


 
Плохиш ©   (2007-07-31 12:39) [11]


> (ведь может получится из десять путей чёрти что)

Если топтать кнопки не думая и не понимая, то да, может получиться.


 
Плохиш ©   (2007-07-31 12:44) [12]


> Как будет быстрее с точки зрения поиска файлов?

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


 
Двигатель внешнего сгорания   (2007-08-03 13:34) [13]


> Плохиш ©   (31.07.07 12:44) [12]
> > Как будет быстрее с точки зрения поиска файлов?С точки
> зрения поиска файла передача маски будет нааамногооо быстрее,
>  чем, то, что может быть нагорожено проверками...


Абсолютно одинаково.


 
DVM ©   (2007-08-03 13:45) [14]


> С точки зрения поиска файла передача маски будет нааамногооо
> быстрее

Вы проверяли?



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

Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.172 c
2-1186382657
Alex7
2007-08-06 10:44
2007.08.26
Отключить действие параметра в статическом созданном SQL


15-1185860176
Кирей
2007-07-31 09:36
2007.08.26
как победить рутинные операции


8-1162570365
Кевларвестов Семен
2006-11-03 19:12
2007.08.26
Чем бы выдернуть инфу из видео файла?


2-1186066654
JaK[Light]
2007-08-02 18:57
2007.08.26
Потоки и volatile


15-1185806075
DillerXX
2007-07-30 18:34
2007.08.26
Я может слишком жалостлив к людям, но...





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