W1015 for 文の制御変数 '%s' を変数パラメータとして渡すことはできません (Delphi)

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

エラーと警告のメッセージ(Delphi):インデックス への移動

この警告は for ループの制御変数を手続きまたは関数に変数パラメータとして渡したときに表示されます。呼び出された手続きまたは関数が制御変数を変更し,それが原因で for ループが正しく実行されない可能性があります。


program Produce;

  procedure p1(var x : Integer);
  begin
  end;

  procedure p0;
    var
      i : Integer;
  begin
    for i := 0 to 1000 do
      p1(i);
  end;

begin
end.

{ このコードは制御変数 i を変数パラメータとして手続きに渡す。そのために警告が表示される }


program Solve;
  procedure p1(x : Integer);
  begin
  end;

  procedure p0;
    var
      i : Integer;
  begin
    i := 0;
    while i <= 1000 do
      p1(i);
  end;


begin
end.

{ この場合にはパラメータ宣言を定数パラメータに変更すれば解決する。制御変数を別の補助変数に代入し,その変数を渡す方法もある。ただし,当初は参照渡しのパラメータとなっていた理由があったかもしれないので,ここでのプログラムの変更がほかのコードに影響を与えないように注意しなければならない。この問題のもう 1 つの解決策は,次のように for ループを同等の while ループに変更すること }