Delphi 对Txt文件的操作

2016-08-22 10:23:02来源:http://qyweiyy.blog.51cto.com/650766/1060702作者:qyweiyy人点击


{$APPTYPE CONSOLE}
{By:天下第一小贱人}
uses
Windows;

{新建一个TXT文档}

Procedure NewTxt(FileName:String);
Var
F : Textfile; {定义 F 为 Textfile}
Begin
AssignFile(F,FileName); {将文件名与变量 F 关联}
ReWrite(F); {创建Txt文档并命名为 “FileName ” }
Closefile(F); {关闭文件 F}
End;







{读取指定的TXT文档}
Procedure ReadTxt(FileName:String);
Var
F : Textfile;
Str : String;
Begin
AssignFile(F, FileName);
Reset(F);
Readln(F, Str); {读取内容并赋值给 Str}
Closefile(F);
End;

{先附上原内容在写入新内容}
Procedure AppendTxt(Str:String;FileName:String);
Var
F:Textfile;
Begin
AssignFile(F, FileName);
Append(F); {附上原来的内容以免原内容被清空}
Writeln(F, Str); {把内容 Ser 写入文件F }
Closefile(F);
End;



{逐行读取,顾名思义一行一行的读取内容}
Procedure ForTxt(FileName:String);
Var
F:Textfile;
S:String;
Ser:String;
begin
AssignFile(F,FileName);
Reset(F);
while not EOF(F) do {循环读取}
begin
Readln(F,S);
Ser:=Ser+S+#13#10;
end;
CloseFile(F);
end;


Begin
// NewTxt('i:/我的文档/桌面/Delphi对Txt的基本操作.Txt');
// ForTxt('i:/我的文档/桌面/Delphi对Txt的基本操作.Txt');
// ReadTxt('i:/我的文档/桌面/Delphi对Txt的基本操作.Txt');
// AppendTxt('aaaaaaaaaaaaaaaaa','i:/我的文档/桌面/Delphi对Txt的基本操作.Txt');
Readln;
End.、






Delphi文本文件读写Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。1.文件变量与文件名关联:AssignFile(VarTxt, FileName);FileName 如果省略路径将默认当前目录。2.初始化读写有三种方式:(1) Reset: 只读打开, 指针移到文件头;(2) Rewrite: 创建新文件并打开, 只写;(3) Append: 从尾部追加, 指针当然在文件尾。文件不存在时使用 Reset 或 Append 会引发一个I/O异常。最后用 CloseFile 关闭文件。为保持兼容,Delphi 也允许用户用 Assign 建立关联, 用 Close 关闭文件。--------------------------------------------------------------------------------//读写示例: unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; typeTForm1 = class(TForm)Memo1: TMemo;Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;Button6: TButton; Button7: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);procedure Button6Click(Sender: TObject);procedure Button7Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end; varForm1: TForm1; implementation {$R *.dfm} varF: Text;//TextFile 和 Text 是一样的FileName: string = 'c:/temp/test.txt'; //写文件procedure TForm1.Button1Click(Sender: TObject);beginAssignFile(F,FileName);Rewrite(F);//会覆盖已存在的文件 Writeln(F, '第一行');Writeln(F, '第二行'); CloseFile(F);end; //读文件(先执行写文件)procedure TForm1.Button2Click(Sender: TObject);vars: string;beginAssignFile(F,FileName);Reset(F); //只读打开 Readln(F, s); //读取ShowMessage(s); //显示: 第一行Readln(F, s); //继续读取ShowMessage(s); //显示: 第二行 CloseFile(F);end; //追加procedure TForm1.Button3Click(Sender: TObject);beginAssignFile(F,FileName);Append(F);//打开准备追加 Writeln(F, '第三行');Writeln(F, '第四行'); CloseFile(F);end; //读取全部(需要Memo帮忙显示)procedure TForm1.Button4Click(Sender: TObject);vars: string;beginAssignFile(F,FileName);Reset(F);//只读打开 Memo1.Clear;while not Eof(F) dobeginReadln(F, s);Memo1.Lines.Add(s);end; CloseFile(F);end; //分列写入procedure TForm1.Button5Click(Sender: TObject);//这个过程级函数的功能是: 用空格把 s 凑够 n 的长度function AddSpace(s: string; n: Word): string;beginwhile Length(s) < n dobegins := s + ' ';end;Result := s;end;varname: string[8];address: string[16];beginAssignFile(F, FileName);Rewrite(F);name := '张三';name := AddSpace(name,8);address := '山东泰安';address := AddSpace(address,16);Writeln(F, name, address);name := '李四儿';name := AddSpace(name,8);address := '贵州省安顺黄果树';address := AddSpace(address,16);Writeln(F, name, address);name := '王二麻子';name := AddSpace(name,8);address := AddSpace(address,16);Writeln(F, name, address); CloseFile(F);{写入的结果是:张三山东泰安李四儿贵州省安顺黄果树王二麻子北京市海淀区}end; //分列读取procedure TForm1.Button6Click(Sender: TObject);varname: string[8];address: string[16];beginAssignFile(F, FileName);Reset(F); Memo1.Clear;while not Eof(F) dobeginReadln(F, name);Memo1.Lines.Add(name);end; CloseFile(F);Reset(F); while not Eof(F) dobeginReadln(F, name, address);Memo1.Lines.Add(address);end; CloseFile(F);{读取结果:张三李四儿王二麻子山东泰安贵州省安顺黄果树北京市海淀区}end; //不同数据类型的写入和读取procedure TForm1.Button7Click(Sender: TObject);varname: string[6];age: Word;birthday: TDate;beginAssignFile(F,FileName);Rewrite(F); name := '菜花';//加两个空格凑够6个字符age := 18;birthday := StrToDate(DateToStr(Now-18*365));//假如她今天过生日Writeln(F,name,age,birthday); CloseFile(F);Reset(F); Readln(F,name,age,birthday);Memo1.Clear;Memo1.Lines.Add(name);Memo1.Lines.Add(IntToStr(age));Memo1.Lines.Add(DateToStr(birthday)); CloseFile(F); {读取结果:菜花181989-12-23}//其实这样的东西应该用类型文件操作更合适, 但如果有这样的文本文件让你读取呢?end; end.


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台