gpt4 book ai didi

delphi - 我自己的存储和检索使用 Delphi 文本 DFM 格式的生命周期很长

转载 作者:行者123 更新时间:2023-12-03 14:46:13 27 4
gpt4 key购买 nike

随着时间的推移,我已经推出了自己的格式来保存和加载对象属性,但在必须重新访问时,我想知道是否使用 Delphi 自己的文本 DFM 格式。我知道这确实是一种“内部”格式,但它的读者现在似乎定义得很好,并且它可以处理所有类型的属性。有人对可能的陷阱有任何评论吗?

最佳答案

我并不是真的说 DFM 是一种“内部格式”。当然,Delphi 在内部将其用于表单和数据模块,但执行流处理的 TReader 和 TWriter 类是可公开访问的,甚至可以记录在案。因此,它们显然也是面向最终用户的。

现在,可能的问题是,当您保存流时,流中的类之一发生更改,导致流不再兼容。如果您尝试在 D7 中打开保存在 D2007+ 中的表单(缺少属性),您可能已经在 Delphi 中看到了这一点。但即使发生了,解决起来也不难。您将收到一个异常,该异常将报告导致问题的确切属性。您还必须使用 RegisterClass 注册您想要流式传输的所有类。

DFM可以以二进制或文本格式存储。即使您将其存储为二进制,您也可以将其转换为文本(使用ObjectBinaryToText),一旦采用文本格式,就很容易修复。

因此,您可能会因结构中的不兼容更改而发生问题,但这些问题与 DFM 机制本身无关,并且使用任何其他流机制也会发生。

至于生命周期,您仍然可以在最新的 Delphi 中打开用 D1 保存的 DFM。因此,只要您牢记向后兼容性,就没有什么可担心的。

总而言之,选择任何特定格式(DFM、XML、JSON、您自己的......)并不会真正影响生命周期。它们都需要相同级别的兼容性。

选择格式的原因更多地与以下方面的决策有关:

  • 与其他应用/服务的互操作性
  • 大小/速度/人类可读性

但您在问题中没有提到任何这些。

因此,我建议使用 DFM 来替代您自己的 DFM,因为这意味着需要维护的代码更少。

关于delphi - 我自己的存储和检索使用 Delphi 文本 DFM 格式的生命周期很长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4171998/

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