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

Вниз

Как правильно сделать поиск файла в каталоге включая подкаталоги   Найти похожие ветки 

 
KLOP ©   (2002-09-08 19:07) [0]

Пробовал FindFirst - FindNext, но приходится городить огород указывая все подкаталоги. А подкаталоги тройного уровня и по количеству - около сотни...

Существует ли какой нибудь способ более оптимальный ?
Я думаю, что эта задача не такая уж редкая.

Спасибо


 
VID ©   (2002-09-08 19:15) [1]

Компонент для поиска файлов:
http://www.vidsoft.nm.ru/jafilefind.rar


 
rhf ©   (2002-09-08 19:22) [2]

FindFirst - FindNext и рекурсия


 
KLOP ©   (2002-09-08 19:44) [3]

Уважаемый rhf можно-ли растолковать про рекурсию...
Просто я не врубился в вышеуказанном совете.

Спасибо.


 
Anatoly Podgoretsky ©   (2002-09-08 20:08) [4]

Ты бы местный FAQ посмотрел что лм, пока тебя помидорами не забросали


 
rhf ©   (2002-09-08 22:48) [5]

рекурсия - это когда процедура(функция) сама себя вызывает, классический пример этого вычисление факториала...
а Anatoly Podgoretsky прав, смотри в факе
и на http://delphibase.endimus.com/


 
Begin ©   (2002-09-09 02:46) [6]


Type
ItemList : array of string;

.....

Function GetFolderStructure (FolderToScan : string; IncludeScanFolder : boolean = True; FolderAttribute : Integer = $3F) : ItemList;
var
FolderArray : Itemlist;
//=================================================================================================
Procedure ScanFolder (FirstFolder : string);
var
SR : TSearchRec;
Finded : integer;
begin
FindFirst(FirstFolder+"*",FolderAttribute,SR);
repeat
if ((SR.Attr and $00000010)<>0) and (SR.Name<>".") and (SR.Name<>"..") then
begin
SetLength(FolderArray,Length(FolderArray)+1);
FolderArray[Length(FolderArray)-1]:=FirstFolder+SR.Name;
ScanFolder(FirstFolder+SR.Name+"\");
end;
Finded:=FindNext(SR);
until Finded <> 0;
FindClose(SR);
end;

//================================================================================================
begin
FolderArray:=nil;
GetFolderStructure:=nil;

if IncludeScanFolder then
begin
SetLength(FolderArray,1);
if FolderToScan[Length(FolderToScan)]="\" then FolderArray[0]:=Copy(FolderToScan,1,Length(FolderToScan)-1)
else FolderArray[0]:=FolderToScan;
end;

if FolderToScan[Length(FolderToScan)]<>"\" then FolderToScan:=FolderToScan+"\";
ScanFolder(FolderToScan);
GetFolderStructure:=FolderArray;
FolderArray:=nil;
end;


P.S. Помидорами не кидать !!! Я сам еще не профи .... :) При обнаружении ошибок и/или возникновении советов по оптимизации/ускорению приму с благодарностью.... :)


 
Begin ©   (2002-09-09 02:49) [7]

Выдает полную структуру каталогов и подкаталогов в FolderToScan. А там уже ее можно заточить и для поиска конкретного файла ...



Страницы: 1 вся ветка

Текущий архив: 2002.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
3-60927
RDA
2002-08-24 19:27
2002.09.19
Отчеты хранимые в базе данных


7-61329
Lex_2000
2002-05-13 13:07
2002.09.19
Проблема переноса программы с Win98 на NT. (+)


3-61027
Adventure_
2002-08-30 09:53
2002.09.19
dbExpress now includes mysql 3.23.45 support with a new driver ..


3-60949
ev1972
2002-08-28 09:54
2002.09.19
Advantage Dataset: Как открыть DBF не подключая CDX?


1-61136
Andy BitOff
2002-09-06 14:03
2002.09.19
Виртуальный Grid