您好,我在我的项目中定义了一些记录,这些记录可以由其他记录组成,也可以由普通数据类型和其他记录的动态数组组成,它是记录类型的一个示例
Type1=record
x:integer;
end;
Type2=record
Y:array of X;
str:string;
end;当我尝试使用blockwrite函数将这些记录类型的变量之一保存到文件中时,如下所示:
var
Temp1:Type2;
begin
setlength(temp1.y,100);
blockwrite(MyFile,Temp1,sizeOf(Temp1);它只写了和纯记录一样大的内容,但是temp1有一个动态数组,可以调整大小,有人能告诉我如何将一个复杂的记录写到一个文件中吗,我的意思是像VB6中使用的那样。谢谢
发布于 2010-12-26 21:08:19
您可以使用https://github.com/KrystianBigaj/kblib (适用于任何动态记录,也适用于包含其他记录的记录等)。在Delphi2006/2009/XE上测试(它不使用D2010中引入的扩展RTTI )。无需手动编写保存/加载代码(只需一行代码即可保存/加载任何动态类型-字符串、记录、动态数组)。
在您的示例中,它将是某物。如下所示:
TKBDynamic.WriteTo(lStream, lType2, TypeInfo(Type2));要重新加载它,请执行以下操作:
TKBDynamic.ReadFrom(lStream, lType2, TypeInfo(Type2));如果任何人对如何处理“唱片版本”感兴趣,只要发布新的问题,然后我会写一些例子。
类似的问题:
发布于 2010-12-26 18:27:52
这行不通的。您将需要手动编写(流)代码来编写每个字段。
看看类中已发布的字段/属性,因为与变量数组一起,这曾经是使用泛型代码流式传输数据的唯一方法。
但是自从D2010扩展了RTTI之后,我还不知道具体的细节。
https://stackoverflow.com/questions/4533376
复制相似问题