0

Delphi XE8 で記述されたモバイル アプリケーションがあり、2 つの別々のプロジェクトから Android または iOS に展開できます。別々のプロジェクトを維持する唯一の理由は、異なる宛先プラットフォームにはコンパイルされない異なる「uses」セクションがあることです...

ANDROID を宛先とする場合:

uses 
  ...
  FMX.Layouts, FMX.ListView,
  FMX.PhoneDialer,
  IdURI,
  Androidapi.JNIBridge,
  Androidapi.JNI.Provider,
  AndroidApi.Jni.GraphicsContentViewText,
  Androidapi.JNI.Net,
  Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,
  AndroidAPI.Helpers,
  AndroidApi.Jni.App,
  Androidapi.IOUtils, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;

IOS を宛先として使用する場合:

uses 
...
  FMX.Layouts, FMX.ListView,
  FMX.PhoneDialer,
  ///// iOS Only ///////////
  MacApi.Helpers, iOSapi.UIKit,
  ///// iOS Only ///////////
  IdURI, IdSSLOpenSSLHeaders_Static,
  System.IOUtils,
  IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;

{ifdef IOS} uses ... {Else} uses .... {EndIf IOS} を配置して、2 つの異なる宛先プラットフォームに対して 2 つの個別の uses ステートメントを定義しようとしましたが、コンパイルできませんでした。

役立つアドバイスをいただければ幸いです。-- イメージベース

4

2 に答える 2

2

TLama が指摘したように、$キャラクターが欠けているようです。これがないと、これらは単なるコメントとして扱われます。あなたがすべきことは...

{$IFDEF IOS}
...
{$ELSE}
...
{$ENDIF}

または:

{$IFDEF IOS}
...
{$ENDIF}
{$IFDEF ANDROID}
...
{$ENDIF}

例えば:

uses 
...
  FMX.Layouts, FMX.ListView,
  FMX.PhoneDialer,
  {$IFDEF IOS}
  ///// iOS Only ///////////
  MacApi.Helpers, iOSapi.UIKit,
    {$IFDEF CPUARM}
  // iOS Devices Only
  IdSSLOpenSSLHeaders_Static,
  // iOS Devices Only
    {$ENDIF}
  ///// iOS Only ///////////
  {$ENDIF}
  {$IFDEF ANDROID}
  ///// Android Only ///////////
  Androidapi.JNIBridge,
  Androidapi.JNI.Provider,
  AndroidApi.Jni.GraphicsContentViewText,
  Androidapi.JNI.Net,
  Androidapi.JNI.JavaTypes, Androidapi.JNI.Telephony,
  AndroidAPI.Helpers,
  AndroidApi.Jni.App,
  Androidapi.IOUtils,
  ///// Android Only ///////////
  {$ENDIF}
  IdURI,
  System.IOUtils,
  IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, Data.DBXDataSnap, IPPeerClient, ... ;
于 2015-07-02T19:49:01.343 に答える
0

他の方法

{$IF Defined(MSWINDOWS) or Defined(MACOS)} 
// some code
{$ENDIF}
于 2015-07-03T06:46:15.830 に答える