Главная страница
    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.039 c
2-1185876280
Мануха
2007-07-31 14:04
2007.08.26
отчет таблиц в qreport


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


3-1178515489
dolmat
2007-05-07 09:24
2007.08.26
ADO избавиться от пароля


5-1160386111
Prohor
2006-10-09 13:28
2007.08.26
Где взять нормальный DbGridEh


2-1185883400
Игорь_
2007-07-31 16:03
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский