【问题标题】:Is it possible to work on one FMX form with different Delphi versions?是否可以使用具有不同 Delphi 版本的一种 FMX 表单?
【发布时间】:2016-05-19 19:07:42
【问题描述】:

我使用 Delphi 10.1 Berlin。我的一个朋友得到了Delphi XE4。

我想修改属于 FMX 表单的代码。代码和表单是用 XE4 编写的,需要在 XE4 中保持可编译。如果我在 10.1 IDE 中编辑代码并保存更改,Delphi 会修改源代码(添加单位)并转换表单(FMX 文件) 到新的格式。如果这个修改后的表单在 XE4 中编译,这会导致几个错误。

是否可以告诉 Delphi 不要进行这些修改?

顺便说一句:

  • 如果我在 IDE 之外编辑代码,一切似乎都正常。
  • Delphi 10.1 正在添加单元(例如 FMX.ComboEdit, FMX.ScrollBox, FMX.Controls.Presentation),即使这些单元已经存在但 ifdefed,例如:

      {$IFDEF DELPHIX_BERLIN_UP} 
      FMX.ComboEdit, FMX.ScrollBox, FMX.Controls.Presentation
      {$ENDIF}
      FMX.ActnList;
    

    修改为

      {$IFDEF DELPHIX_BERLIN_UP} 
      FMX.ComboEdit, FMX.ScrollBox, FMX.Controls.Presentation
      {$ENDIF}
      FMX.ActnList, FMX.ComboEdit, FMX.ScrollBox, FMX.Controls.Presentation;
    

    导致编译器错误:

      E2004: Identifier redeclared: FMX.ComboEdit ... 
    

【问题讨论】:

  • 你不应该在一个表单单元中有太多的代码,所以不同版本的双重表单似乎更容易维护。 FMX 仍在不断发展,也许有一天它会稳定下来并向后兼容。
  • 不,不可能阻止 IDE 进行这些更改。它不知道您的条件({$IFDEF...}),因为这些是用于编译器而不是 IDE。最新版本的 FMX 重新定位了许多定义,XE4 中某个地方的内容可能在 XE5 或更高版本中完全(甚至完全不同地实现)。
  • @LURD 我不同意。对于真正的项目来说,双重表单并不是一个真正的选择(即使表单单元中几乎没有代码)。
  • @AloisHeimer,你在这里有什么选择?不仅您必须与 IDE 斗争,进行修改,而且在某些组件中结构完全不同。好的,您可以使用$IFDEF,但在某些时候,为两个版本保留一个表单的努力会克服维护单独表单的努力。
  • @LURD 你是对的。但目前$IFDEFs 对我来说已经足够了。表单单元内没有太多代码。但我担心唯一的长期解决方案是就一个 IDE 版本达成一致:(

标签: delphi delphi-xe4 delphi-10.1-berlin


【解决方案1】:

是否可以告诉 Delphi 不要进行这些修改?

不,不是。 DFM/FMX 文件是 IDE 管理的和特定于版本的,并且一直如此。您应该为每个 IDE 版本维护单独的 DFM/FMX 文件。

通常可以让较旧的 IDE 发出警告并忽略较新 IDE 添加的属性。还有一些第三方工具会在您在旧 IDE 中打开之前从 DFM/FMX 文件中去除新属性。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多