gpt4 book ai didi

Delphi:以某种结构存储数据

转载 作者:行者123 更新时间:2023-12-03 18:00:52 25 4
gpt4 key购买 nike

对于模拟程序,我在 Delphi 2010 中工作。模拟不是问题,但我需要使用大量数据,这会产生问题。数据在 Excel 工作表中可用,因此无需在 Delphi 中编辑此数据,但从 Excel 工作表收集此数据大约需要 10 分钟。只要您不需要在每次程序运行时都收集数据,这就不是问题。所以我制作了一个程序,收集所有数据使其可见,而不是这里的问题,然后存储它。但是我不能将它存储为“Delphi 格式”,而不丢失结构,所以它可以在几秒钟内加载。

我在 Delphi 方面经验不足,我搜索了很长时间的解决方案,但无法理解什么是最好的。我认为我构建数据的方式是错误的,但它很简单并且有效。但是,如果有更好的存储数据的方法,请说出来,但请记住,我需要更多的解释,而不仅仅是使用“a xml 文件”、“generic”或“Ttreeview”。 (已阅读但无法使用)。

数据是为了:我做了这个产品,我做的下一个产品是这个,所以我需要清洗吗?对或错。

数据存储为一个带有产品编号(整数)的类(TObject)和一个列表,该列表包含接下来可以制作的所有产品。此列表包含另一个带有产品编号(整数)的类(TObject)和我需要的清理(​​ bool 值)。我想将这个结构保存在一个文件中,而不丢失数据并将其读回相同的结构。

我希望有人能提供帮助。提前谢谢你。

更新:提供更多信息的代码(修改为英文)

Clean_from = class(TObject)
public
myfromNumber : Integer;
mylist : TList;
published
constructor Create;
End

Clean_To = class(TObject)
public
myToNumber : Integer;
Clean : Boolean;
End;

constructor Clean_from.Create;
begin
inherited Create;
myList := Tlist.Create;
end;

For i = 0 to 100 do
begin
From:= Clean_from.create;
for j := 0 to 10 do
begin
To := Clean_To.create;
To.clean := true or false;
From.myList.add(To);
end;
GlobalList.add(from);
end;

现在我想保存包含所有内容的全局列表,以便我可以用相同的结构加载它。

最佳答案

你需要的是所谓的“序列化”机制。

<强>1。标准方式

1.1 保存到流

在Delphi中,我们通常会实现一个SaveToStream方法,它将每个对象的内容保存到一个目标TStream中(可以是一个TFileStreamTMemoryStream)。

您必须手动编写序列化。

1.2 类 DFM 流

参见 TWriter/TReader类。

如果您在已发布的属性中定义数据,则可以使用那些标准的 Delphi 类将它们序列化。

对于一些能够将任何 TCollection 序列化为 JSON 内容的方法,请参阅 this blog article .

<强>2。 RTTI

例如参见 this SO question .

特别是,新的增强型 RTTI(自 Delphi 2010 起可用)为序列化打开了新的机会。

<强>3。使用记录而不是类

如果每个项目不存储很多内容(一些整数/ bool 值),使用记录而不是对象可能有意义。对于速度和内存消耗/碎片,这可能是值得的。

这里是 some wrapper able to serialize any dynamic array ,甚至包含嵌套记录或动态数组。

<强>4。使用数据库引擎

也许更好的方法是不要让您的数据停留在您的应用程序专有的非演化二进制形式中。如果要添加属性,则必须手动管理它。或者,如果您想从其他应用程序访问您的数据,可能会很困难。

周围有很多数据库解决方案——与其使用外部数据库(如 MS SQL、FireBird 或 Oracle),不如将数据库嵌入到您的应用程序中(安装起来更容易)。值得一提SQLite其中有 a lot of wrappers , 包括 our version (如果您想改用 MS SQL 或 Oracle,这将允许您更改为任何其他数据库)。

您还有其他解决方案 - 请参阅 this SO question - 如果您需要性能,请查看我们的 Big Table library .

关于Delphi:以某种结构存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7105995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com