フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: 条件コンパイル (バージョン間)
DEKO
管理者
投稿数: 2693
条件コンパイル (バージョン間)
on: 2017/11/04 06:10 Sat

バージョン間の条件コンパイルの方法は以下で。
http://ht-deko.com/tech001.html#tech003

但し、Delphi 5 以前を無視していいのなら、

  {$IF CompilerVersion >= バージョン}
{$DEFINE 識別子}
{$IFEND}

 
こんな感じで OK です。

各製品のバージョンは
http://docwiki.embarcadero.com/RADStudio/ja/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9_%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3
これの "CompilerVersion" の所を参照してください。

古い Delphi をサポートする必要があるのなら、PROJECT JEDI の jedi.inc を使いましょう。
https://github.com/project-jedi/jedi/blob/master/jedi.inc
別に JCL / JVCL をインストールしろと言っているのではありません。誰が書いても最終的にはこうなってしまうので、既存のものは有難く使わせてもらいましょう、という事です。

使い方は

  {$I 'jedi.inc'}

 
ってユニットの先頭あたりでやっておけば、jedi.inc 内で使われている識別子を利用して、

{$IFDEF DELPHI2007_UP}

// 処理

{$ENDIF}

 
Delphi 2007 以降での処理とかを書けます。

See Also:
[Delphi コンパイラ指令 (DocWiki)]
http://docwiki.embarcadero.com/RADStudio/ja/%E6%8C%87%E4%BB%A4

DEKO
管理者
投稿数: 2693
Re: 条件コンパイル (バージョン間)
on: 2017/11/04 06:19 Sat

関連して、特定のバージョンのコンパイラではコンパイルさせない方法です。

program Project1;

{$I 'jedi.inc'}

{$IFNDEF DELPHI2007_UP}
{$MESSAGE Error 'This project must be compiled in Delphi 2007 or later'}
{$ENDIF}

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

 
このように記述すると、Delphi 2006 以前でコンパイルしようとするとエラーメッセージを出して止まります。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.018 sec.