Ob bei der Parameterübergabe eine Kopie oder nur eine Referenz (praktisch ein Zeiger auf den übergebenen Record, aber vor dem Entwickler verborgen) übergeben wird, kann man aber mit den Schlüsselworten
const,
var oder
out steuern.
Delphi-Quellcode:
procedure TuWasMitPointer(P: PMyRecord);
begin
P^.ID := 1;
P^.Name := 'Test';
end;
procedure TuWasMitReferenz(var R: TMyRecord);
begin
R.ID := 1;
R.Name := 'Test';
end;
procedure TuWasMitReferenz(out R: TMyRecord);
begin
R.ID := 1;
R.Name := 'Test';
end;
Die Prozeduren erzeugen genau den selben Code. Der Compiler führt beim Compilieren aber unterschiedliche Prüfungen aus und kann den Entwickler so bei falscher Benutzung warnen.