Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.016 c
2-1186371548
delphino
2007-08-06 07:39
2007.08.26
Обновление данных


2-1186060016
JanMihail
2007-08-02 17:06
2007.08.26
Как высвободить память занимаемую TWebBrowser ом


15-1185515813
Vlad Oshin
2007-07-27 09:56
2007.08.26
Что-то вот подумалось. Подавить ошибки, кто-то когдато спрашивал


1-1182154931
LeoTon
2007-06-18 12:22
2007.08.26
Динамическое копирование частей форы из DLL


15-1185772704
cosinus
2007-07-30 09:18
2007.08.26
Использование плагинов не на C (как в SDK), а на Delphi?




   Наверх