作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我定义了一个记录,其中包含许多不同类型的字段(整数、实数、字符串……加上“数组……”的动态数组)。我想将其作为一个整体保存到一个文件中,然后能够将其加载回我的程序中。我不想单独保存每个字段的值。文件类型(二进制或 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
关于德尔福2010 : How to save a whole record to a file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820996/
我是一名优秀的程序员,十分优秀!