私はDelphi 10.1 Berlinを使用しています。私の友人はDelphi XE4を持っています。Delphiのバージョンが異なる1つのFMXフォームで作業することはできますか?
FMXフォームに属するコードを修正したいと考えています。コードとフォームはXE4で書かれており、XE4でコンパイル可能な状態を保つ必要があります。 10.1 IDE内のコードを編集して変更を保存すると、Delphiはソースコードを変更し(単位を追加する)、フォーム(FMXファイル) を新しい形式に変換します。この変更されたフォームがXE4でコンパイルされると、いくつかのエラーが発生します。
これらの変更を行わないようにDelphiに指示することはできますか?ところで
:
- 私はIDEのすべての外側のコードを編集する場合は、正常に動作するようです。
デルファイ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はまだ進化しており、おそらく1日は安定して後方互換性があります。 –
いいえ、IDEがこれらの変更を行わないようにすることはできません。あなたの条件文( '{$ IFDEF ...}')を認識しません。なぜなら、それらはIDE用ではなくコンパイラ用であるからです。最近のバージョンのFMXは多くの定義を移してしまいました.XE4の1か所にあるものは、XE5以降ではまったく別の場所にあるかもしれません。 –
@LURD私は同意しません。二重フォームを持つことは実際のプロジェクトにとっては本当にオプションにはなりません(フォームユニットにはほとんどコードがありません)。 –