是否可以使用不同的Delphi版本处理一个FMX表单?

是否可以使用不同的Delphi版本处理一个FMX表单?,delphi,delphi-xe4,delphi-10.1-berlin,Delphi,Delphi Xe4,Delphi 10.1 Berlin,我使用Delphi10.1。我的一个朋友得到了Delphi XE4 我想修改属于FMX表单的代码。代码和表单是用XE4编写的,需要在XE4中保持可编译性。如果我在10.1 IDE中编辑代码并保存更改,Delphi将修改源代码(添加单元)并转换表单(FMX文件) 以一种新的格式。如果这个修改过的表单是在XE4中编译的,这将导致几个错误 可以告诉Delphi不要做这些修改吗 顺便说一句: 如果我在IDE之外编辑代码,一切看起来都很好 Delphi 10.1正在添加单元(例如FMX.ComboEdi

我使用Delphi10.1。我的一个朋友得到了Delphi XE4

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

可以告诉Delphi不要做这些修改吗

顺便说一句:

  • 如果我在IDE之外编辑代码,一切看起来都很好
  • Delphi 10.1正在添加单元(例如
    FMX.ComboEdit、FMX.ScrollBox、FMX.Controls.Presentation
    ),即使这些单元已经存在,但如果已定义,例如:

      {$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 ... 
    
可以告诉Delphi不要做这些修改吗

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


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

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