unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Name:string; //存储原文本文件中每条数据记录的 姓名
Sex:string; //... 性别
Other:string; //...
SourceFile:TextFile; //原文本文件
TargetFile:TextFile; //存储所筛选出数据的文件
begin
AssignFile(SourceFile,'C:\DATA.txt');
Reset(SourceFile); //置原文件于只读状态
AssignFile(TargetFile,'C:\Result.txt');
Rewrite(TargetFile); //置目标文件于读写状态以写入符合条件的数据
{ 请注意 SeekEof 函数的用法!
此函数判断文本文件是否结束,它会自动过滤文本文件中的空白行
——而此功能正符合我们的需要 }
try
while not SeekEof(SourceFile) do
begin
ReadLn(SourceFile,Name); { 以"行"为单位读取 SourceFile 文件中的数据 }
ReadLn(SourceFile,Sex);
ReadLn(SourceFile,Other);
if Trim(Other)='湖北' then
begin
WriteLn(TargetFile,Name); { 以行为单位写数据至 TargetFile 文件中 }
WriteLn(TargetFile,Sex);
WriteLn(TargetFile,Other);
WriteLn(TargetFile,'------------------------'); { 为符合条件的每条数据打上结束标记 }
end;
end; //End While
finally
CloseFile(SourceFile);
CloseFile(TargetFile);
end; //End Try
end;
end.