拡張構文(Delphi)
Delphi コンパイラ指令のリスト:インデックス への移動
種類 |
スイッチ |
構文 |
{$X+} または {$X-} {$EXTENDEDSYNTAX ON} または {$EXTENDEDSYNTAX OFF} |
デフォルト |
{$X+} {$EXTENDEDSYNTAX ON} |
スコープ |
グローバル |
説明
メモ: $X 指令は下位互換性のために用意されています。 Delphi アプリケーションの作成時には、{$X-} モードを使用しないでください。
$X 指令は、以下に示す Delphi の拡張構文を有効または無効にします。
- 関数文。 {$X+} モードでは、関数の呼び出しは手続きの呼び出しとして使用できます。つまり、関数呼び出しの結果は、別の関数に渡したり演算や代入に使用することなく破棄することができます。 一般には、関数で実行される計算は結果によって表されるため、結果を破棄してしまってはほとんど意味がありません。 しかし、時には、役立つ結果を生成せずに、グローバル変数の値を設定するなどのタスクを実行するために関数が呼び出されることもあります。
- Result 変数。 {$X+} モードでは、定義済みの変数 Result を関数の本体内で使用して、関数の戻り値を保持することができます。
- NULL 終端文字列。 {$X+} モードでは、インデックスが 0 から始まる文字配列(array[0..X] of Char)に Delphi 文字列を代入できます。この文字配列は PChar 型と互換性があります。
この指令は、キャレット(^)を使用してポインタを示す方法にも影響を及ぼします。 {$X+} が有効な場合(デフォルト)は、ポインタの参照時にキャレットを省略できます。 ただし、ポインタの宣言時には、キャレットが必要です。
例:
{$X+} type PMyRec = ^TMyRec; TMyRec = record Data: Integer; end; var MyRec: PMyRec; begin New(MyRec); MyRec.Data := 42; {#1} end.
通常なら、#1 マークの付いた行は次のように表されます。
MyRec^.Data := 42;
しかし、拡張構文が有効な場合は、キャレットを省略できます。