我已经定义了一个记录,它有许多不同类型的字段(整数,实数,字符串,…加上动态数组的“数组…”)。
我想将它作为一个整体保存到文件中,然后可以将其加载回我的程序。我不想单独保存每个字段的值。
文件类型(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