W1013 定数 0 が NIL に変換されました (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

Delphi コンパイラでは,ポインタ表現の部分で nil のかわりに定数 0 を使用できます。これにより,RTL の変更を気にせずに古いコードをコンパイルすることができます。


program Produce;

  procedure p0(p : Pointer);
  begin
  end;

begin
  p0(0);
end.

この例では,手続き p0 は定数 0 が渡されますがパラメータ Pointer をとるように宣言されています。コンパイラは内部的に必要な変換を行い,0 を nil に変更します。そのため,コードはコンパイルも実行もできます。


program Solve;

  procedure p0(p : Pointer);
  begin
  end;

begin
  p0(NIL);
end.

この問題の解決方法は 2 つあります。上記の例では,定数 0 を nil と入れ替えています。または,手続き定義を変更し,パラメータを整数型と指定し直す方法もあります。