zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    java Class的 getSuperclass与getGenericSuperclass区别
    再有人问你volatile是什么,把这篇文章也发给他
    深入理解乐观锁与悲观锁
    再有人问你Java内存模型是什么,就把这篇文章发给他
    再有人问你synchronized是什么,就把这篇文章发给他
    《成神之路-基础篇》JVM——Java内存模型(已完结)
    css
    css
    require.js
    css -border
  • 原文地址:https://www.cnblogs.com/ninomiya/p/8548915.html
Copyright © 2011-2022 走看看