2016-05-19 7 views
2

私は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 ... 
    
+0

とにかくフォーム単位でコードを増やすべきではないので、異なるバージョンのデュアルフォームを維持する方が簡単です。 FMXはまだ進化しており、おそらく1日は安定して後方互換性があります。 –

+1

いいえ、IDEがこれらの変更を行わないようにすることはできません。あなたの条件文( '{$ IFDEF ...}')を認識しません。なぜなら、それらはIDE用ではなくコンパイラ用であるからです。最近のバージョンのFMXは多くの定義を移してしまいました.XE4の1か所にあるものは、XE5以降ではまったく別の場所にあるかもしれません。 –

+0

@LURD私は同意しません。二重フォームを持つことは実際のプロジェクトにとっては本当にオプションにはなりません(フォームユニットにはほとんどコードがありません)。 –

答えて

3

Is it possible to tell Delphi not to do these modifications?

いいえ、そうではありません。 DFM/FMXファイルはIDEで管理されており、バージョン固有であり、いつもあった。 IDEバージョンごとに別々のDFM/FMXファイルを管理する必要があります。

通常は古いIDEで新しいIDEで追加されたプロパティを警告し無視するのに問題ありません。また、古いIDEで開く前にDFM/FMXファイルから新しいプロパティを取り除くサードパーティ製のツールもあります。

関連する問題