5,388
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, RzButton, Mask, RzEdit, ComCtrls, RzTabs,
RzStatus, ExtCtrls, RzPanel;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
RzEdit1: TRzEdit;
RzEdit2: TRzEdit;
RzBitBtn1: TRzBitBtn;
RzBitBtn2: TRzBitBtn;
RzBitBtn3: TRzBitBtn;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
TabSheet2: TRzTabSheet;
RzRichEdit1: TRzRichEdit;
RzRichEdit2: TRzRichEdit;
RzStatusBar1: TRzStatusBar;
RzClockStatus1: TRzClockStatus;
RzStatusPane1: TRzStatusPane;
RzBitBtn4: TRzBitBtn;
procedure RzBitBtn3Click(Sender: TObject);
procedure RzBitBtn1Click(Sender: TObject);
procedure RzBitBtn2Click(Sender: TObject);
procedure RzBitBtn4Click(Sender: TObject);
private
{ Private declarations }
procedure search();
procedure uncontain;
procedure deletesame();
public
{ Public declarations }
end;
var
Form1: TForm1;
str1,str2,str3:tstringlist;
j2:integer;
implementation
{$R *.dfm}
procedure tform1.deletesame(); //删除相同的记录
var
i:integer;
tickcount:longword;
begin
tickcount:=gettickcount;
for i:=str1.Count-1 downto 0 do
begin
if (i>=1) and (str1.Strings[i]=str1.Strings[i-1]) then
str1.Delete(i);
end;
str1.SaveToFile('D:\delphi\tstringlist\test.txt');
showmessage(inttostr(gettickcount-tickcount)) //计算所用时间
end;
procedure tform1.uncontain; //列出比较文件里有,但源文件里没有的记录
var
mystr:string;
n,p:integer;
begin
p:=0;
for n:=0 to str2.Count-1 do
begin
if str1.IndexOf(str2.Strings[n])<0 then
str3.Add(str2.Strings[n]);
end;
str3.SaveToFile('D:\delphi\tstringlist\test.txt');
end;
procedure tform1.search(); //列出源文件里有,但比较文件里没有的。
var
i,j:integer;
begin
j:=0;
for i:=0 to str1.Count-1 do
begin
if (j<=str3.Count-1)and (str1.Strings[i]=str3.Strings[j]) then j:=j+1
else
begin
rzrichedit1.Lines.Add(str1.Strings[i]);
j2:=j2+1
end;
end;
end;
procedure TForm1.RzBitBtn3Click(Sender: TObject);
begin
rzrichedit1.Clear;
rzrichedit2.Clear;
try
str1:=tstringlist.Create;
str2:=tstringlist.Create;
str3:=tstringlist.Create;
str1.LoadFromFile(pchar(rzedit1.Text));
str2.LoadFromFile(pchar(rzedit2.Text));
str1.Sort;
str2.Sort;
if str1.Count<str2.Count then
application.MessageBox('The source file‘s line count couldn‘t allow more than the compare file。','Warning',mb_iconerror)
else
begin
deletesame;
uncontain;
// search;
rzstatuspane1.Caption:='count line: '+inttostr(j2)+' rows';
end;
finally
begin
str1.Free;
str2.Free;
str3.Free;
end;
end;
end;
procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
if opendialog1.Execute then
rzedit1.Text:=opendialog1.FileName;
end;
procedure TForm1.RzBitBtn2Click(Sender: TObject);
begin
if opendialog1.Execute then
rzedit2.Text:=opendialog1.FileName;
end;
procedure TForm1.RzBitBtn4Click(Sender: TObject);
begin
str1:=tstringlist.Create;
str1.LoadFromFile(pchar(rzedit1.Text));
str1.Sort;
deletesame;
end;
end.