Bei Klassen dürfte das eigentlich keinen Unterschied machen. Denn das, was du da bekommst ist ja ein Zeiger. Die lokale Kopie ist also in Wirklichkeit ein zweiter Zeiger. Das heißt der Unterschied ist hier folgender:
Delphi-Quellcode:
procedure Test1(x: TObject);
begin
x := nil;
// x ist nil
end;
procedure Test2(var x: TObject);
begin
x := nil;
end;
var a: TObject;
begin
a := TObject.Create; // Zeigt jetzt an Adresse xyz
Test1(a); // a zeigt immer noch auf xyz
Test2(a); // Jetzt ist auch a auf nil
end;
Alle Änderungen, die du am Objekt machst werden also auch ohne var übernommen. (Sieht man ja leicht z.B. am Sender-Parameter im TNotifyEvent).