Delphiのコンパイル時の警告(H2077、H2164)のメッセージがローカル変数の数によって表示されない事がある

提供: Support
移動先: 案内検索

質問

Delphiのコンパイル時の警告(H2077H2164)がローカル変数の数によって表示されない事があります。

以下は、そのコード例です。

procedure Proc;
var
  a00, a01, a02, a03, a04, a05, a06, a07, a08, a09,
  a10, a11, a12, a13, a14, a15, a16, a17, a18, a19,
  a20, a21, a22, a23, a24, a25, a26, a27, a28, a29,
  a30, a31: Integer;
begin
  a00:=0; a01:=0; a02:=0; a03:=0; a04:=0;
  a05:=0; a06:=0; a07:=0; a08:=0; a09:=0;
  a10:=0; a11:=0; a12:=0; a13:=0; a14:=0;
  a15:=0; a16:=0; a17:=0; a18:=0; a19:=0;
  a20:=0; a21:=0; a22:=0; a23:=0; a24:=0;
  a25:=0; a26:=0; a27:=0; a28:=0; a29:=0;
  a30:=0;

  a00 := a00+a01+a02+a03+a04+a05+a06+a07+a08+a09
   +a10+a11+a12+a13+a14+a15+a16+a17+a18+a19
   +a20+a21+a22+a23+a24+a25+a26+a27+a28+a29
   +a30;
  Int(a00);
end;

メソッド内のローカル変数が30を超えると警告メッセージが表示されません。

回答

現状のDelphi 32ビットコンパイラの仕様では、31個以上のローカル変数のトレースが行われません。この問題は、Embarcadero Quality Portalにも既に報告されております。

ケース番号 タイトル
RSP-23035 Hint "H2164 Variable 'xx' is declared but never used" absent

(Embarcadero Quality Portalへのログインは、EDNアカウントが必要)


但し、Delphi 64ビットコンパイラでは、トレース可能なローカル変数に上限はありませんので、コードの警告メッセージの確認は、Delphi 64ビットコンパイラでチェックしてください。