Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
ВнизПоиск по файлам, типа *.xls, *.mdb, *.dbf Найти похожие ветки
← →
M1sT © (2007-01-17 03:36) [0]Привет всем =)))
Задача такова: Хочу сделать программу, что бы она осуществляла поиск нужной строки в файлах с расширением *.xls, *.dbf, *.mdb...
Подскажите пожалуйста какие компоненты лучше использовать, если в каждом файле содержится более 2000 записей??? И как вообще удобнее сделать поиск по файлам, что бы минимально загружать комп, и при этом добиться наилучшей производительности программы??
← →
Virgo_Style © (2007-01-17 06:39) [1]M1sT © (17.01.07 3:36)
Подскажите пожалуйста какие компоненты лучше использовать, если в каждом файле содержится более 2000 записей???
видимо, позволяющие делать SQL-запросы
← →
kaZaNoVa © (2007-01-17 12:55) [2]
procedure SuperSearch(var k:string);
Var ResultFail,Maska,FText,put1:string;
S_text,freg2:boolean;
MaxFail,MaxTime,mtime,nashli:cardinal;
function texit:boolean;
Var r:boolean;
begin
if gettickcount>(mtime+(MaxTime*1000)) then r:=true else r:=false;;
if not r then
if nashli>=MaxFail then r:=true;
result:=r;
end;
function Nash_Fail(const fn:string):boolean;
begin
if texit then exit;
if S_text then begin
if freg2 then begin
if (pos(FText,FAllRead(fn))<=0) then exit;end else begin
if (pos(uppercase(FText),uppercase(FAllRead(fn)))<=0) then exit; end;
end;
ResultFail:=ResultFail+#13#10+fn;
inc(nashli);
end;
Function Poisk32Ex(const f32:string):Boolean;
Var
a,fname:string;
f1:TWIN32FindData;
f2: THandle;
Begin
if texit then exit;
f2:=FindFirstFile(pchar(f32+"*"),f1); //ищем папки
if f2=INVALID_HANDLE_VALUE then begin
FindClose(f2);exit;
end;
fname:=f1.cFileName;
if ((fname<>".")and (fname<>"..")and (fname<>"")) then
if (FILE_ATTRIBUTE_DIRECTORY and f1.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY) then Poisk32Ex(f32+fname+"\");
while FindNEXTFile(f2,f1) do begin
if texit then exit;
fname:=f1.cFileName;
if ((fname<>".")and (fname<>"..")and (fname<>"")) then
if (FILE_ATTRIBUTE_DIRECTORY and f1.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY) then Poisk32Ex(f32+fname+"\");
end;
FindClose(f2);
f2:=FindFirstFile(pchar(f32+Maska),f1);
if f2=INVALID_HANDLE_VALUE then begin
FindClose(f2);exit;
end;
fname:=f1.cFileName;
if ((fname<>".")and (fname<>"..")and (fname<>"") and (FILE_ATTRIBUTE_DIRECTORY and f1.dwFileAttributes <> FILE_ATTRIBUTE_DIRECTORY))
then Nash_Fail(f32+fname);
if texit then exit;
while FindNEXTFile(f2,f1) do begin
if texit then exit;
fname:=f1.cFileName;
if ((fname<>".")and (fname<>"..")and (fname<>"") and (FILE_ATTRIBUTE_DIRECTORY and f1.dwFileAttributes <> FILE_ATTRIBUTE_DIRECTORY))
then Nash_Fail(f32+fname);
end;
FindClose(f2);
end;
Begin
//формат данных поиска
//путь|маска|не более|время|с текстом|с учётом регистра в тексте
put1:=copy(k,1,pos("|",k)-1); nashli:=0;
delete(k,1,pos("|",k));
Maska:=copy(k,1,pos("|",k)-1);
delete(k,1,pos("|",k));
MaxFail:=strtoint(copy(k,1,pos("|",k)-1));
delete(k,1,pos("|",k));
if MaxFail<=0 then MaxFail:=1;
MaxTime:=strtoint(copy(k,1,pos("|",k)-1));
delete(k,1,pos("|",k));
if copy(k,1,3)="<|>" then S_text:=false else
begin
S_text:=true;
FText:=(copy(k,1,pos("|",k)-1));
delete(k,1,pos("|",k));
freg2:=k="0";
end;
ResultFail:="";
mtime:=gettickcount;
Poisk32Ex(put1);
send_q:="017Nashli "+inttostr(nashli)+"Time "+inttostr(gettickcount-mtime)+" ms|"+ResultFail;
Send1(send_q);
end;
← →
Сергей М. © (2007-01-17 12:57) [3]
> какие компоненты лучше использовать
ADO
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c