Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Kein Problem.
Im Prinzip kann man auch noch
eventuell einen Destructor schreiben (nur ohne das override)
sowie einen class constructor und class destructor für seine class var's (entspricht dem initialization- und finalization-Abschnitten)
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Das Stimmt nur indirekt.
(beim Constructor weiß ich es jetzt nicht genau)
Aber bei der class-funktion wird das Result als Out-Parameter übergeben. (wenn der Record größer als 8 Byte ist oder Managed-Typen enthält, ansonsten wird er wie ein Int64 behandelt)
Es wird dürfte also direkt in den Speicherbereich der Variable geschrieben werden. :gruebel:
@Uwe: Entschuldigung.
Das liegt daran,...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Das Default(T) stammt vermutlich von den Generics. (steht da bestimmt irgendwo unauffällig in der Doku mit drin)
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Und vergiss nicht das
with Result do begin
end;
um den Code in der "falschen" Create-Funktion, damit der enthaltene Code dann genauso geschrieben werden kann, als stünde er in einem richtigen Constructor.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Ach ja:
InitializeRecord
FinalizeRecord
Einige der geheimen Funktionen, wie das auch UniqueString.
Delphi nutzt diese Funktionen selber, um die managed Typen in Recordvariablen zu behandeln und auch bei Objektvariablen oder bei New und Dispose.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
12. Nov 2013
Am Sichersten ist man wohl mit Option 2 und 4.
Schade daß man keine parameterlosen Record-Konstructoren erstellen darft. (Nja, dank eines defaultparameters könnte man da eventuell tricksen).
Man könnte emba ja mal fragen, ob die einem einen lokalen Compilerschalter geben, mit dem man sagen kann daß er bei den "nachfolgenden" Prozeduren die lokalen variablen mit 0 initialisieren soll. Oder...