如何在Delphi6-2007中保持表单和框架的可编译性?

如何在Delphi6-2007中保持表单和框架的可编译性?,delphi,forms,multiple-versions,Delphi,Forms,Multiple Versions,我们最近将长期运行的Delphi项目转换为开源项目。已经有很多人提供了补丁,这很好,但不幸的是,当使用Delphi 2006(及更高版本)保存表单和框架时,.dfm中包含旧版本无法处理的新属性。IDE非常优雅地处理表单(“忽略属性?”),但框架在运行时加载并导致错误。就我而言,这不是一个选择 我现在手动从.dmf文件中删除了这些属性,但我真的想知道是否有更优雅的解决方案。没有办法从新的IDE以向后兼容的格式保存,是吗?是否有现有工具可以从.dfm中剥离不支持的属性?我还缺少其他优雅的解决方案吗

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

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

通常,对于一个商业项目,我只需将项目升级到最新版本即可。。。但由于这是开源的,我真的不想在那些仍在使用Delphi7的开发人员身上浪费时间。这实际上包括我自己。

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

*.PopupMode
*.PopupParent
*.ExplicitLeft
*.ExplicitTop
*.ExplicitWidth
*.ExplicitHeight
*.BevelKind
*.BufferDocument
*.DoubleBuffered
*.ParentDoubleBuffered
*.DisableHyperlinks
*.AlwaysEnquoteFloats
*.PixelsPerInch
我从一个批处理文件运行此dc.exe实用程序,该批处理文件在提交之前会清理dfms 对subversion的更改。我的批处理文件中的语法如下:

dc.exe -s -fd10.txt *.dfm -i
您可以在以下位置获取我的资料:

http://sites.google.com/site/warrenpostma/files

为了完整起见:

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


出于您的目的,Warren的解决方案更好,但它可以是一种变通方法。当我们使用双D7-D2006时,我做了一段时间。你可以试试安迪的。它可以自动打开和关闭项目中的所有窗体和框架,这会使IDE删除未知属性(如Marco)。

您键入waaa的速度太快。我几乎一路发布相同的信息;你赢了我。很好-我不知道这件事。谢谢