Изменения в новых версиях / Delphi 10.3 Rio

// *** before: ***
procedure Sum(const A: TArray<Integer>);
var
  I: Integer;
  Item: Integer;
  Total: Integer;
begin
  Total := 0;
  for I := Low(A) to High(A) do
    Total := Total + A[I];

  for Item in A do
    Writeln(Item);
end;

// *** in version 10.3: ***
procedure Sum(const A: TArray<Integer>);
begin
  var Total := 0;

  for var I := Low(A) to High(A) do
    Total := Total + A[I];

  for var Item in A do          // for-in takes its type from the array
    Writeln(Item);

  // I and Item live inside their loops only: a second loop below can
  // declare its own I without a warning about a hidden name
end;