【发布时间】: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