// *** before: ***
// every local variable had to be declared in a var block before begin,
// far away from the line that actually uses it
procedure Report(const Items: TStrings);
var
I: Integer;
Line: string;
Total: Integer;
begin
Total := 0;
for I := 0 to Items.Count - 1 do
begin
Line := Items[I];
Total := Total + Length(Line);
end;
Writeln(Total);
end;
// *** in version 10.3: ***
procedure Report(const Items: TStrings);
begin
var Total: Integer := 0;
for var I := 0 to Items.Count - 1 do
begin
var Line: string := Items[I];
Total := Total + Length(Line);
end;
Writeln(Total);
end;
// the declaration stands where the value appears, and several names of
// one type still fit on a line: var X, Y: Integer;