首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将复杂记录写入文件

将复杂记录写入文件
EN

Stack Overflow用户
提问于 2010-12-26 17:40:16
回答 2查看 1.4K关注 0票数 6

您好,我在我的项目中定义了一些记录,这些记录可以由其他记录组成,也可以由普通数据类型和其他记录的动态数组组成,它是记录类型的一个示例

代码语言:javascript
复制
  Type1=record
    x:integer;
  end;
  Type2=record
    Y:array of X;
    str:string;
  end;

当我尝试使用blockwrite函数将这些记录类型的变量之一保存到文件中时,如下所示:

代码语言:javascript
复制
var
  Temp1:Type2;
  begin
    setlength(temp1.y,100);
    blockwrite(MyFile,Temp1,sizeOf(Temp1);

它只写了和纯记录一样大的内容,但是temp1有一个动态数组,可以调整大小,有人能告诉我如何将一个复杂的记录写到一个文件中吗,我的意思是像VB6中使用的那样。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-26 21:08:19

您可以使用https://github.com/KrystianBigaj/kblib (适用于任何动态记录,也适用于包含其他记录的记录等)。在Delphi2006/2009/XE上测试(它不使用D2010中引入的扩展RTTI )。无需手动编写保存/加载代码(只需一行代码即可保存/加载任何动态类型-字符串、记录、动态数组)。

在您的示例中,它将是某物。如下所示:

代码语言:javascript
复制
TKBDynamic.WriteTo(lStream, lType2, TypeInfo(Type2));

要重新加载它,请执行以下操作:

代码语言:javascript
复制
TKBDynamic.ReadFrom(lStream, lType2, TypeInfo(Type2));

如果任何人对如何处理“唱片版本”感兴趣,只要发布新的问题,然后我会写一些例子。

类似的问题:

票数 7
EN

Stack Overflow用户

发布于 2010-12-26 18:27:52

这行不通的。您将需要手动编写(流)代码来编写每个字段。

看看类中已发布的字段/属性,因为与变量数组一起,这曾经是使用泛型代码流式传输数据的唯一方法。

但是自从D2010扩展了RTTI之后,我还不知道具体的细节。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4533376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档