Главная страница
    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.047 c
2-1169130268
vitv
2007-01-18 17:24
2007.02.04
Построение запроса


2-1168667484
TatarinD6
2007-01-13 08:51
2007.02.04
Наверное многим будет полезен


15-1168833783
Slider007
2007-01-15 07:03
2007.02.04
С днем рождения ! 15 января


15-1168627859
IMHO
2007-01-12 21:50
2007.02.04
OU, CN в заголовке письма


2-1168893444
Mettt
2007-01-15 23:37
2007.02.04
Сортировка TList





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