代码之家  ›  专栏  ›  技术社区  ›  Brian Frost

为我自己的商店和检索使用Delphi文本DFM格式的寿命

  •  8
  • Brian Frost  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  16
  •   Daniel Maurić    14 年前

    我不会说DFM是一种“内部格式”。当然,Delphi在内部将其用于表单和数据模块,但执行流式处理的treader和twriter类是公开访问的,甚至是文档化的。因此,它们显然也适用于最终用户。

    现在,可能的问题是,当保存流时,流中的某个类随后发生更改,从而使流不再兼容。如果您试图打开D7中保存在D2007+中的表单(缺少属性),您可能在Delphi中看到了这一点。但即使发生了,也不难解决。您将得到一个异常,它将报告导致问题的确切属性。您还必须注册所有要流式处理的类 RegisterClass .

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

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

    至于使用寿命,您仍然可以在最新的Delphi中打开用d1保存的dfm。只要您记住向后兼容性,就没有什么可担心的了。

    总之,任何特定格式的选择,dfm,xml,json,你自己的…不会影响寿命。它们都需要相同级别的兼容性。

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

    • 与其他应用程序/服务的互操作性
    • 尺寸/速度/人可读性

    但你没有提到问题中的任何一个。

    所以我建议使用DFM覆盖您自己的,因为这意味着要维护的代码更少。