7

我们最近将我们长期运行的 Delphi 项目转换为开源。很多人已经贡献了补丁,这很好,但不幸的是,使用 Delphi 2006(及更高版本)保存的表单和框架在 .dfm 中包含旧版本无法处理的新属性。IDE 可以非常优雅地处理表单(“忽略属性?”),但帧是在运行时加载并导致错误。就我而言,这不是一个选择。

我现在手动从 .dmf 文件中删除了这些属性,但我真的想知道是否有更优雅的解决方案。没有办法从新的 IDE 中以向后兼容的格式保存,是吗?是否有现有工具可以从 .dfm 中去除不支持的属性?我还缺少其他优雅的解决方案吗?

通常,对于商业项目,我只需将项目升级到适用的最新版本......但由于这是开源的,我真的不想放弃那些仍在使用 Delphi 7 的开发人员。这包括我自己, 实际上。

4

3 回答 3

12

JEDI JVCL项目使用了一个小实用程序 dc.exe(delphi 清洁器)和一个 DFM 中的属性列表,这些属性在旧版本的 delphi 中不存在,我的包含以下文本:

*.PopupMode
*.PopupParent
*.ExplicitLeft
*.ExplicitTop
*.ExplicitWidth
*.ExplicitHeight
*.BevelKind
*.BufferDocument
*.DoubleBuffered
*.ParentDoubleBuffered
*.DisableHyperlinks
*.AlwaysEnquoteFloats
*.PixelsPerInch

我从一个批处理文件运行这个 dc.exe 实用程序,该文件在我提交对 subversion 的更改之前清理我的 dfms。我的批处理文件中的语法是:

dc.exe -s -fd10.txt *.dfm -i

您可以在以下位置获取我的东西:

http://sites.google.com/site/warrenpostma/files
于 2010-01-27T21:57:20.133 回答
5

你可以试试 Andy 的DFMCheck。它可以自动打开和关闭项目中的所有窗体和框架,这使得 IDE 删除未知属性(如 Marco所写)。

于 2010-01-28T07:37:01.067 回答
4

好吧,为了完整起见:

在支持的最旧的 Delphi 中打开 dfms,让它删除所有未知属性,更改属性并保存。

出于您的目的,Warren 的解决方案更好,但它可能是一种解决方法。当我们使用双 D7-D2006 时,我做了一段时间。

于 2010-01-27T22:33:48.533 回答