Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#5

AW: [XE3] Operator Overloading, Verhalten?

  Alt 20. Mär 2014, 17:19
Delphi-Quellcode:
class operator TVarX.implicit(const z: integer): TVarX;
begin
  Result.FormMaster := nil;
  Result.Value := z;
end;
Ohne FormMaster:=nil kann es sein, daß FormMaster einen undefinierten Zufallswert enthält. (nicht NIL)
Und nun fällt es auch auf, warum dein .object zwangsweise verschwinden muß.

Zitat:
Hab dann die Variable lokal angelegt, und einfach mit
v.object := irgendwas;
und
v:=100;
initialisiert.
Das ist auch richtig so, denn du weißt ja dem "kompletten" Record einen neuen Wert zu und alles was vorher drin stand, ist somit hinfällig.

Im Prinzip entspricht dein Code ja Folgendem, egal ob es jetzt ein Objekt oder Record ist. (wobei eher Interface, statt Objekt, wegen der automatischen Speicherverwaltung)
Delphi-Quellcode:
v.FormMaster := irgendwas;
v := TVarX.Create(100); // Parameter für "Value"

// bzw.

v.FormMaster := irgendwas;
v := TVarX.Create;
v.Value := 100;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Mär 2014 um 17:21 Uhr)
  Mit Zitat antworten Zitat