H2135 一度も実行されない for/while ループがあります - 削除しました (Delphi)

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

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

コンパイラは指定されたループ構造が 1 回も実行されないと判断し,最適化のためにそのループ構造を削除します。例:


program Produce;
(*$HINTS ON*)

  var
    i : Integer;

begin
  i := 0;
  WHILE FALSE AND (i < 100) DO
    INC(i);
end.

{ コンパイラは「FALSE AND (i < 100)」を常に FALSE と評価し,そのループは実行されないと容易に判断する }


program Solve;
(*$HINTS ON*)

  var
    i : Integer;

begin
  i := 0;
  WHILE i < 100 DO
    INC(i);
end.

{ while 文を制御する論理式を調べて,常に FALSE になるような状態を回避すれば,このヒントは解決する。for ループでは必ず (上限-下限)>=1 にする }

{ この警告は,for ループによって制御変数が Longint の範囲内の値から範囲外の値へインクリメントされた場合に出力される。次に例を示します。


var I: Cardinal;
begin
  For I := 0 to $FFFFFFFF do
...

{ これはコンパイラの制限によるものだが,for ループのかわりに while ループを使用することで対処できる }