Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#36

AW: Properties haben nach Zuweisung falsche Werte

  Alt 29. Okt 2014, 20:37
Lazy Load sorgt dafür, das solche Zuweisungen nur einmal durchgeführt werden.
Delphi-Quellcode:
// Also so gehts:
Function TForm1.GetReAdr: TAdresse;
Begin
  If fAddress = Nil Then Begin
    Adresse.Vorname := 'a';
    Adresse.Name := 'b';
    fAddress := Adresse;
  End;
  Result := fAddress;
End;

// Und so auch
Function TForm1.GetReAdr: TAdresse;
Begin
  If not fInitialized Then Begin
    Adresse.Vorname := 'a';
    Adresse.Name := 'b';
    fInitialized := True;
  End;
  Result := Adresse;
End;
Allgemein ist das LazyLoad-Pattern für Properties so:
Delphi-Quellcode:
Function TMyClass.GetProperty : TSomeValue;
Begin
  if fProperty=nil then
    fProperty := CreateSomeValue;
  result := fProperty;
End;
Damit wird nur beim Zugriff, und dann nur beim ersten, instantiiert. Früher nannte man das 'Fetch on demand'. Heute eben 'lazy load'. Und damit schlägt man dem blöden Compiler ein Schnippchen.
  Mit Zitat antworten Zitat