コンパイル時点でOS毎に分岐
OS固有のAPIを呼び出したり、OS毎に処理を分岐させたい場合に
実行時にアプリを起動しているOSの種別を取得して処理を分岐する方法もありますが、コンパイル時点で処理を分岐する方法もあります。
コンパイル時に処理を分岐するには、{$ifdef }命令を記載します。
{$ifdef } は、関数内に記載しても良いですし、クラス定義の段階で記載しても良いです。
記載例
{$ifdef Darwin}
// ここに Mac OS 向けのコードを記載
{$else}
{$ifdef Windows}
// ここに Windows OS 向けのコードを記載
{$else}
// ここに Linux 等、他の OS 向けのコードを記載
{$endif}
{$endif}
クラス定義の分岐の例
type
TTestObject = class(TObject)
private
{$ifdef Darwin}
// ここに Mac OS 向けのコードを記載
{$else}
{$ifdef Windows}
// ここに Windows OS 向けのコードを記載
{$else}
// ここに Linux 等、他の OS 向けのコードを記載
{$endif}
{$endif}
end;
関数内の分岐の例
function GetText(): String;
begin
{$ifdef Darwin}
// ここに Mac OS 向けのコードを記載
{$else}
{$ifdef Windows}
// ここに Windows OS 向けのコードを記載
{$else}
// ここに Linux 等、他の OS 向けのコードを記載
{$endif}
{$endif}
end;