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

Вниз

Поиск по файлам, типа *.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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.071 c
2-1168867030
Glivera
2007-01-15 16:17
2007.02.04
CoolTrayIcon


4-1159033538
иван8511
2006-09-23 21:45
2007.02.04
Отслеживание запущенной программы


3-1163410504
Gyrus
2006-11-13 12:35
2007.02.04
Скопировать таблицы


15-1168889829
The X
2007-01-15 22:37
2007.02.04
Корректное отображение кириллицы в названиях разделов в CHMхелпах


2-1169022767
sergeyst
2007-01-17 11:32
2007.02.04
StringGrid