加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi 2010:如何将整个记录保存到文件?

发布时间:2020-12-15 10:16:06 所属栏目:大数据 来源:网络整理
导读:我已经定义了一个记录,它有许多不同类型的字段(整数,实数,字符串,…加上动态数组的“数组…”)。 我想将它作为一个整体保存到文件中,然后可以将其加载回我的程序。我不想单独保存每个字段的值。 文件类型(binary或ascii或…)不重要,因为Delphi可以将其
我已经定义了一个记录,它有许多不同类型的字段(整数,实数,字符串,…加上动态数组的“数组…”)。
我想将它作为一个整体保存到文件中,然后可以将其加载回我的程序。我不想单独保存每个字段的值。
文件类型(binary或ascii或…)不重要,因为Delphi可以将其读回记录。

你有什么建议吗?

解决方法

只要您不使用动态数组,就可以直接将流记录的内存加载到流中。所以如果你使用字符串,你需要使它们固定:
type TTestRecord = record 
  FMyString : string[20]; 
end; 

var 
  rTestRecord: TTestRecord;
  strm : TMemoryStream; 

strm.Write(rTestRecord,Sizeof(TTestRecord) );

您甚至可以一次加载或保存一组记录!

type TRecordArray = array of TTestRecord;

var ra : TRecordArray; 

strm.Write(ra[0],SizeOf(TTestRecord) * Length(ra));

如果你想写动态内容:

iCount   := Length(aArray);
strm.Write(iCount,Sizeof(iCount) );      //first write our length
strm.Write(aArray[0],SizeOf * iCount);   //then write content

之后,您可以阅读:

strm.Read(iCount,Sizeof(iCount) );       //first read the length
SetLength(aArray,iCount);                //then alloc mem
strm.Read(aArray[0],SizeOf * iCount);    //then read content

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读