я приведу код:
Код: Выделить всё
var
Form1: TForm1;
MyDir: String;
X1,X2,X3: Variant;
FirstNameF1,LastNameF1,FirstNameF2,LastNameF2: String;
F1,F2: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
GetDir(0,MyDir);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I1,I2,I3: Integer;
begin
X1:=CreateOleObject('Excel.Application');
X1.DisplayAlerts:=False;
X1.WorkBooks.Open(MyDir+'\Output\File1.xls');
X2:=CreateOleObject('Excel.Application');
X2.DisplayAlerts:=False;
X2.WorkBooks.Open(MyDir+'\Output\File2.xls');
X3:=CreateOleObject('Excel.Application');
X3.DisplayAlerts:=False;
X3.WorkBooks.Add;
F1:=StrToInt(Edit1.Text);
F2:=StrToInt(Edit2.Text);
I3:=0;
for I1:=1 to F1 do
begin
FirstNameF1:=X1.Cells[I1,1];
LastNameF1:=X1.Cells[I1,2];
for I2:=1 to F2 do
begin
FirstNameF2:=X2.Cells[I2,1];
LastNameF2:=X2.Cells[I2,2];
if (FirstnameF1=FirstNameF2) and (LastNameF1=LastNameF2) then
begin
I3:=I3+1;
X3.Cells[I3,1].Value:=X1.Cells[I1,1].Value;
X3.Cells[I3,2].Value:=X1.Cells[I1,2].Value;
X3.Cells[I3,3].Value:=X1.Cells[I1,3].Value;
X3.Cells[I3,4].Value:=X1.Cells[I1,4].Value;
X3.Cells[I3,5].Value:=X1.Cells[I1,5].Value;
X3.Cells[I3,6].Value:=X2.Cells[I2,3].Value;
X3.Cells[I3,7].Value:=X2.Cells[I2,4].Value;
end;
end;
end;
X1.Quit;
X2.Quit;
X3.Visible:=True;
end;
end.
Проблемма в быстродействии :
При поиске 2 персон (с совпадением 1 записи) в файле с 14664-мя записями ушло 2 минут 05 секунд на Intel Cell3,06GHz.
мне надо искать 34000 персон в итоге он будет искать( приблизительно 708 минут)

что можно сделать, или где ошибка, как оптимизировать
заранее большое спасибо