OK, also Ersatz für das WITH ist dieses VAR doch wirklich mal ein schöner Ersatz,
aber bei einer kurzen Funktion würde doch nichts dagegen sprechen die Variable 3 Zeilen höher zu definieren.
Dann aber mit begin..end drum herum...
Delphi-Quellcode:
procedure TForm71.FormCreate(Sender: TObject);
begin
begin
var a := 42;
ShowMessage(IntToStr(a));
end;
a := 33; // hier gibt es die Variable nicht mehr --> Fehler
end;
Auf die Weise kann man Interfaces z.B. wieder aus dem Scope laufen lassen.
Es gibt schon durchaus Stellen, an denen es Sinn macht so etwas zu verwenden. Darum sage ich ja auch, dass ich persönlich es nicht möchte. Aber ich verstehe durchaus, wenn das jemand anders sieht.
Type inference ist der Teil daran, der mir weniger gefällt, so praktisch es auch sein mag. Aber der Punkt, dass man genau den Typ angibt, den man meint, der Compiler es prüft usw. war immer eine der wichtigsten Stärken von Pascal / Delphi. Das wird damit aufgeweicht.