This warning is issued if the value of a for loop control variable is used after the loop.
You can only rely on the final value of a for loop control variable if the loop is left with a goto or exit statement.
The purpose of this restriction is to enable the compiler to generate efficient code for the for loop.
program Produce;
(*$WARNINGS ON*)
function Search(const A: array of Integer; Value: Integer): Integer;
begin
for Result := 0 to High(A) do
if A[Result] = Value then
break;
end;
const
A : array [0..9] of Integer = (1,2,3,4,5,6,7,8,9,10);
begin
Writeln( Search(A,11) );
end.In the example, the Result variable is used implicitly after the loop, but it is undefined if we did not find the value - hence the warning.
program Solve;
(*$WARNINGS ON*)
function Search(const A: array of Integer; Value: Integer): Integer;
begin
for Result := 0 to High(A) do
if A[Result] = Value then
exit;
Result := High(a)+1;
end;
const
A : array [0..9] of Integer = (1,2,3,4,5,6,7,8,9,10);
begin
Writeln( Search(A,11) );
end.The solution is to assign the intended value to the control variable for the case where we don't exit the loop prematurely.
|
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
|
What do you think about this topic? Send feedback!
|