Главная страница
    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.48 MB
Время: 0.042 c
2-1186045260
_Tehnik_
2007-08-02 13:01
2007.08.26
Приложение на переднем плане и исчо кое что постаршнее


15-1185830927
uses1
2007-07-31 01:28
2007.08.26
Как упаковать массив чисел не кратных двойке?


15-1185894733
ЮТК
2007-07-31 19:12
2007.08.26
О ЮТК


6-1166561840
m00ngl0w
2006-12-19 23:57
2007.08.26
WhoIs


15-1185454046
Kostafey
2007-07-26 16:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский