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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
15-1185284193
tesseract
2007-07-24 17:36
2007.08.26
Я таки вернулся


15-1185890008
Synset
2007-07-31 17:53
2007.08.26
Fast Net


11-1166785407
Fregl
2006-12-22 14:03
2007.08.26
Работа с BDE32


15-1185386364
Piter
2007-07-25 21:59
2007.08.26
Структурность vs Простота


15-1184778574
Kolan
2007-07-18 21:09
2007.08.26
Еще про DataLayer, а как предпологается быть с отображением?