Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.055 c
1-1165062961
kernel
2006-12-02 15:36
2007.02.04
Canvas&amp;Desktop


15-1168848855
ocean
2007-01-15 11:14
2007.02.04
С прошедшим Старым НГ!


2-1169139285
Garacio
2007-01-18 19:54
2007.02.04
сохранить значение в ini из другой формы


4-1157143168
NeiRo_St
2006-09-02 00:39
2007.02.04
Web-camera


15-1168725774
ProgRAMmer Dimonych
2007-01-14 01:02
2007.02.04
Подскажите, как на PHP+SendMail подделать адрес получателя





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский