[日积月累]-20180623:W1037 FOR-Loop variable ‘Result’ may be undefined after loop

【译】

W1037 FOR 循环变量 Result 可能在循环后失去定义

【问题原因】

Result 被用在循环的初始值或结束值时会引发此警告:

function Test: Integer;
var
  I: Integer;
begin
  Result:=100;
  for I := 0 to Result do
  begin
    ...
  end;
end;

就个人来看,用做循环的结束值是没有问题的,但下面的用法就有问题了:

function Test: Integer;
begin
  for Result := 0 to 10 do
  begin
    ...
  end;
end;

这种情况下,Result的返回值将是11,而不是10,这可能不符合一般人的预期,因此官方给予了一个警告。但第一种情况,我觉得没必要。

【解决方法】

尽量不在 For 循环中使用 Result 做为控制变量,除非你自己知道确实怎么用。象上面的第二种情况,换种写法即可。

【示例】

【参考】

官方文档说明

分享到: