noch ein kleines Demo:
Delphi-Quellcode:
type
TBla = class
private
FFeld: string;
public
property Feld: string read FFeld write FFeld;
end;
procedure Change(const aBla: TBla);
begin
aBla.Feld := 'Hallo';
end;
...
var
bla: TBla;
begin
bla := TBla.Create;
bla.Feld := 'Blub';
Change(bla);
ShowMessage(bla.Feld);
bla.Free;
end;
Ausgegeben wird Hallo und nicht Blub. Denn übergeben wird an Change nur der Zeiger der auf den Inhalt von bla zeigt. Der wird als const übergeben. Die Zeile aBla.Feld := 'Hallo'; ändert aber nicht den Wert von aBla (also die Adresse auf die der Zeiger zeigt), sondern nur den Inhalt von aBla.Feld.
Würde nicht ein Zeiger übergeben werden, sondern der komplette Inhalt von bla, dann wäre in Change das Ändern von Feld nicht möglich, da aBla als const deklariert ist.