Einzelnen Beitrag anzeigen

Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Verwendung von Constructor und Destruktor

  Alt 11. Feb 2007, 12:47
Zitat von p0w3r5tr34m3r:
list2 := list1 ich nehme an das es zu ner AccessViolation kommt da list2 keinen Speicher reserviert bekommt.
Musst die liste schon erstellen damit sie speicher hat.
Na wo ist das Problem? Es wird TStringList.Create aufgerufen, der Instanzenpointer auf das erzeugte Objekt wird in list1 gespeichert und anschließend nochmal in list2. Das heißt, list1 und list2 zeigen beide auf die gleiche Instanz einer TStringList.

Bei solchen Funktionen, die eine Instanz erzeugen und den Instanzenpointer zurückgeben, muss immer der Caller die Instanz freigeben. Klar, denn wenn der Callee sie freigibt, kann der Caller nichts mehr damit anfangen.

Nebenbei ist eine gute Alternative dazu, eine Klasseninstanz per Parameter zu übergeben, mit der die Prozedur/Funktion dann arbeitet.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat