一、Tstrings、Tstringlist
procedure TForm1.Button2Click(Sender: TObject); var strlist: TStringList; path: string; begin path := 'c: est.txt'; strlist := TStringList.Create; try strlist.Add('str=abcd'); strlist.Insert(1, 'int=123'); // key=value 类似键值对模式 strlist.SaveToFile(path); finally strlist.Free; //释放 end; end; procedure TForm1.Button4Click(Sender: TObject); var strlist: TStringList; path: string; begin path := 'c: est.txt'; strlist := TStringList.Create; try strlist.LoadFromFile(path); mmo1.Lines.Add(strlist.Values['str']); //输出:abcd mmo1.lines.Add(strlist.ValueFromIndex[1]);// 输出:123 //strlist还有很多好用的功能,可以去查一下 finally strlist.Free; //释放 end; end;
二、直接读取
三、流 (注:不能使用string存储数据,string是指针存的是地址,写入文件的数据是无效的)
-
TMemoryStream
-
1 procedure TForm1.Button2Click(Sender: TObject); 2 var m: TMemoryStream; 3 tr:tr_record; 4 path:string; 5 begin 6 path:='c: est.txt'; 7 m := TMemoryStream.Create; 8 try 9 tr.str:='abcd'; 10 tr.int:=10; 11 m.Write(tr,SizeOf(tr));// 将tr数据写入流 12 m.SaveToFile(path);//流存入文本 13 m.Clear; //清除流的数据 14 FillChar(tr,SizeOf(tr),0);//初始化结构体数据 15 16 m.LoadFromFile(path);//从文本中读取数据,用内存流装 17 m.Position:=0; //将指针位置置为0(如果装载了多条数据,可以通过改变位置读取后面的,默认为0) 18 m.Read(tr,SizeOf(tr));//把数据装到结构体里 19 mmo1.Lines.Add(tr.str);//显示结果为:abcd 20 //第二种方式 21 Move(m.memory^,tr,SizeOf(tr));//跟positon没关系,结果相同 22 finally 23 m.Free;//释放内存流 24 end; 25 end;
-
TFileStream
-
1 procedure TForm1.Button2Click(Sender: TObject); 2 var m: TFileStream; 3 tr: tr_record; 4 path: string; 5 begin 6 path := 'c: est.txt'; 7 m := TFileStream.Create(path, fmCreate); 8 try 9 tr.str := 'abcd'; 10 tr.int := 10; 11 12 m.Write(tr, SizeOf(tr)); // 将tr数据写入流 13 14 15 finally 16 m.Free; //释放内存流 17 end; 18 end; 19 20 procedure TForm1.Button4Click(Sender: TObject); 21 var m: TFileStream; 22 tr: tr_record; 23 path: string; 24 begin 25 path := 'c: est.txt'; 26 m := TFileStream.Create(path, fmOpenRead); 27 try 28 m.Read(tr,SizeOf(tr)); 29 mmo1.Lines.Add(tr.str); //结果为:abcd 30 finally 31 m.Free; //释放内存流 32 end; 33 end;