unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
TAA, TBB: tstringlist;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I, J, ST, ET, N, NA, NB: integer;
S1, S2: string;
function bijiao(const S1, S2: string): integer;
var
I, R: integer;
begin
I := 1;
R := 0;
while I <= length(S2) do
begin
if (S1 = S2) then
Inc(R);
Inc(I);
end;
Result := R;
end;
begin
ST := gettickcount;
NA := TAA.Count;
NB := TBB.Count;
for I := 0 to NA - 1 do
begin
for J := 0 to NB - 1 do
begin
S1 := TAA.Strings;
S2 := TBB.Strings[J];
N := bijiao(S1, S2);
end;
Edit3.Text := formatfloat('0%', I / NA * 100);
application.ProcessMessages;
end;
ET := gettickcount;
Edit3.Text := InttoStr(ET - ST) + '毫秒';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
TAA := tstringlist.Create;
TBB := tstringlist.Create;
for i := 1 to 700 do
TAA.Add('fdlknjglkfdnglndflkgnkldf');
for i := 1 to 60000 do
TBB.Add('fdlknjglkfdnglndflkgnkldf');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
freeandnil(TAA);
freeandnil(TBB);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
TAA: array of pchar;
TBB: array of pchar;
I, J, ST, ET, N, NA, NB: integer;
S1, S2: string;
function bijiao(const S1, S2: pchar): integer;
var
I, R: integer;
l: integer;
begin
I := 1;
R := 0;
while s2 <>#0 do
begin
if (S1 = S2) then
Inc(R);
Inc(I);
end;
Result := R;
end;
begin
setlength(TAA, 700);
setlength(TBB, 60000);
for i := 0 to 699 do
TAA := 'fdlknjglkfdnglndflkgnkldf';
for j := 0 to 59999 do
TBB[j] := 'fdlknjglkfdnglndflkgnkldf';
ST := gettickcount;
NA := length(TAA);
NB := length(TBB);
for I := 0 to NA - 1 do
begin
for J := 0 to NB - 1 do
begin
N := bijiao(Taa, Tbb[j]);
end;
Edit3.Text := formatfloat('0%', I / NA * 100);
application.ProcessMessages;
end;
ET := gettickcount;
Edit3.Text := InttoStr(ET - ST) + '毫秒';
end;
end.
object Form1: TForm1
Left = 134
Top = 193
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 232
Top = 72
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 40
Top = 88
Width = 121
Height = 21
TabOrder = 1
Text = 'Edit1'
end
object Edit2: TEdit
Left = 40
Top = 120
Width = 121
Height = 21
TabOrder = 2
Text = 'Edit2'
end
object Edit3: TEdit
Left = 40
Top = 160
Width = 121
Height = 21
TabOrder = 3
Text = 'Edit3'
end
object Button2: TButton
Left = 232
Top = 112
Width = 75
Height = 25
Caption = 'Button2'
TabOrder = 4
OnClick = Button2Click
end
end