Hallo Zusammen.
Unit A definiert:
Delphi-Quellcode:
type
TFoo = Record
MeinFeld : String;
end;
Unit B definiert:
Delphi-Quellcode:
type
TFoo = Class
Public
MeinFeld : String
end;
Dann gibt es noch
Unit C mit
Delphi-Quellcode:
Procedure A(AFoo : TFoo);
begin
AFoo.MeinFeld := 'Warum kommt das hier nicht zurück';
end;
oder besser?
Delphi-Quellcode:
Procedure A(Var AFoo : TFoo);
begin
AFoo.MeinFeld := 'Das kommt auf jeden Fall zurück';
end;
OK, Worum geht es mir?
Bei Records macht der Var Parameter einen Unterschied.
- Call bei Referenz
- Call bei Value
Theoretisch bei Classen auch, aber nur für den Objectzeiger.
Wenn ich also nach 5 Jahren mir eine Procedure anschaue kann ich mich ggf. nicht mehr daran erinnern, ob TFoo ein Object oder ein Record ist.
Daher meine These oder nennt es mein DesignPattern.
Wenn an Procedure ein Objekt übergeben wird, schreibe ich immer VAR. So kann ich an der Definition der Procedure sehen, dass wenn ich innerhalb der Procedure etwas mit AFoo mache, es Auswirkungen nach draußen hat.
Bin gespannt auf Eure Kommentare. Besonders ob wenigsten einer Dabei ist mit "Gute Idee"...
Mavarik