![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файлов по маске [D7, XP]
Sdubaruhnul © (2007-07-29 18:25:00)Здравствуйте, Мастера.
Использую для поиска ф-ии API FindFirstFileW и компанию. Как бы лучше организовать поиск файлов по маске, допустим такой: "*.txt; *.doc". Вижу два варианта:
1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:\temp\*.doc".
2. Ищу всё строкой типа "c:\temp\*.*" и далее проверяю найденное на предмет соответствия маске.
DVM (2007-08-03 13:45:00) [1]
> С точки зрения поиска файла передача маски будет нааамногооо
> быстрее
Вы проверяли?
Двигатель внешнего сгорания (2007-08-03 13:34:00) [2]
> Плохиш © (31.07.07 12:44) [12]
> > Как будет быстрее с точки зрения поиска файлов?С точки
> зрения поиска файла передача маски будет нааамногооо быстрее,
> чем, то, что может быть нагорожено проверками...
Абсолютно одинаково.
Плохиш (2007-07-31 12:44:00) [3]
> Как будет быстрее с точки зрения поиска файлов?
С точки зрения поиска файлапередача маски будет нааамногооо быстрее, чем, то, что может быть нагорожено проверками...
Плохиш (2007-07-31 12:39:00) [4]
> (ведь может получится из десять путей чёрти что)
Если топтать кнопки не думая и не понимая, то да, может получиться.
Двигатель внешнего сгорания (2007-07-31 12:33:00) [5]
> Sdubaruhnul (30.07.07 16:07) [7]
> >а FindFirstFile разве поймет вариант 1?
Поймёт.
Откуда такая информация?
> 1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:
> \temp\*.doc".2. Ищу всё строкой типа "c:\temp\*.*" и далее
> проверяю найденное на предмет соответствия маске.
Второй вариант однозначно.
Стандартные функции так и работают: Перебор всех файлов и проверка соответствия маске.
iXT (2007-07-30 17:01:00) [6]2 + if is Dir then FindInDir
DVM (2007-07-30 16:12:00) [7]
> Нет, чего-то я склоняюсь ко второму варианту.
ИМХО 2) удобнее и понятнее. До опр. пределов, конечно.
Sdubaruhnul (2007-07-30 16:07:00) [8]> а FindFirstFile разве поймет вариант 1?
Поймёт. Но мне эту строку сначала надо составить, а потом FindFirstFile будет её разбирать. И так нужно составлять для каждой подпапки, если искать всё внутри каталога. Нет, чего-то я склоняюсь ко второму варианту.
clickmaker (2007-07-30 15:15:00) [9]
> 1. Задаю длинную поисковую строку типа "c:\temp\*.txt; c:\temp\*.doc".
> 2. Ищу всё строкой типа "c:\temp\*.*" и далее проверяю найденное
> на предмет соответствия маске.
а FindFirstFile разве поймет вариант 1?
Sdubaruhnul (2007-07-30 14:53:00) [10]FindFirst, FindNext...
function FindFirst(const Path: string; Attr: Integer;
var F: TSearchRec): Integer;
F.FindHandle := FindFirstFile( PChar(Path), F.FindData);
Сергей М. (2007-07-30 11:28:00) [11]
> Готовые Дельфийские функции не годятся - они все не-Unicode'ные
Это какие же ?
Sdubaruhnul (2007-07-30 11:22:00) [12]Так что, никто не может посоветовать? Как будет быстрее с точки зрения поиска файлов? Не опасно ли передавать длинные строки (ведь может получится из десять путей чёрти что)?
Готовые Дельфийские функции не годятся - они все не-Unicode'ные.
Sdubaruhnul (2007-07-29 20:49:00) [13]> Однако файловые функции есть для этого, в.ч. и для масок
Какие? Важен Unicode.
MsGuns (2007-07-29 20:18:00) [14]Однако файловые функции есть для этого, в.ч. и для масок