delphi之读写文件的三种方式

一、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;
原文地址:https://www.cnblogs.com/ninomiya/p/8548915.html