Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Class und TStringList (https://www.delphipraxis.net/132680-eigene-class-und-tstringlist.html)

Dragon27 17. Apr 2009 11:15


Eigene Class und TStringList
 
Hallo,

ich habe eine Frage bezügluch eine Stringliste in einer Klasse.

Im Moment habe habe ich einen Constructor der so aussieht:

Delphi-Quellcode:
constructor TDatei.Create();
begin
  inherited Create;
    FFehlerliste:=Tstringlist.Create;
    FEditiert:=false;
end;
Meine Frage ist nun, ob ich auch einen Destructor verwenden muss bei dem die StringList wieder freigegeben wird oder ob
dies automatisch geschieht, wenn ich die Klasse TDatei wieder freigebe.

Danke!

DeddyH 17. Apr 2009 11:17

Re: Eigene Class und TStringList
 
Das musst Du selbst übernehmen. Eine TStringlist ist ja keine Komponente, der Du einen Owner zuweisen könntest, der sich dann um die Freigabe kümmert.

quendolineDD 17. Apr 2009 11:17

Re: Eigene Class und TStringList
 
Du solltest einen Destructor verwenden, da du sonst Speicherlacks hast.
Interne Objekte werden nicht frei gegeben. Delphi hat nunmal keinen Garbage Collector.

mkinzler 17. Apr 2009 11:55

Re: Eigene Class und TStringList
 
Alles was man im Konstruktor erzeugt, sollte man im Destruktor wieder entsorgen

Butch87 17. Apr 2009 12:07

Re: Eigene Class und TStringList
 
Hab ich das jetzt richtig verstanden:
Könnte ich dann, für diesen Fall jetzt, der Stringliste Self als Owner zuweisen? Wenn nun die Instanz frei gegeben wird, wird dann auch die Stringlist frei gegeben, ja?

das is jetzt rein hypothetisch, ich gebs sonst auch immer im Destructor frei...

mkinzler 17. Apr 2009 12:11

Re: Eigene Class und TStringList
 
Zitat:

Zitat von Butch87
Hab ich das jetzt richtig verstanden:
Könnte ich dann, für diesen Fall jetzt, der Stringliste Self als Owner zuweisen? Wenn nun die Instanz frei gegeben wird, wird dann auch die Stringlist frei gegeben, ja?

das is jetzt rein hypothetisch, ich gebs sonst auch immer im Destructor frei...

Nein da eine StringListe keine Komponente ist, hat sie auch keinen Owner.

Im Destruktor:

Delphi-Quellcode:
FFehlerliste.Free;

Yogu 17. Apr 2009 13:32

Re: Eigene Class und TStringList
 
Zitat:

Zitat von Butch87
Könnte ich dann, für diesen Fall jetzt, der Stringliste Self als Owner zuweisen? Wenn nun die Instanz frei gegeben wird, wird dann auch die Stringlist frei gegeben, ja?

Das ginge, wenn sowohl die StringList als auch TDatei Komponenten wären, also von TComponent abgeleitet wären. Das sind sie aber nicht, also musst du sie selbst im Destruktor freigeben.

Ich glaube, du hast das hier falsch gelesen:
Zitat:

Zitat von DeddyH
Das musst Du selbst übernehmen. Eine TStringlist ist ja keine Komponente, der Du einen Owner zuweisen könntest, der sich dann um die Freigabe kümmert.


p80286 17. Apr 2009 13:48

Re: Eigene Class und TStringList
 
hallo zusammen,

Zitat:

Zitat von quendolineDD
.... Delphi hat nunmal keinen Garbage Collector.

irgendwie habe ich im Hinterkopf, das Delphi im Gegensatz zu C eben doch einen hat????
(Mal abgesen davon das es guter Stil ist selbst aufzuräumen)

Gruß
K-H

mkinzler 17. Apr 2009 14:01

Re: Eigene Class und TStringList
 
Delphi.Net hat GC ( eigentlich ja das FrameWork) aber Delphi.Win32 nicht.

Butch87 17. Apr 2009 14:13

Re: Eigene Class und TStringList
 
Zitat:

Zitat von Yogu
Ich glaube, du hast das hier falsch gelesen:
Zitat:

Zitat von DeddyH
Das musst Du selbst übernehmen. Eine TStringlist ist ja keine Komponente, der Du einen Owner zuweisen könntest, der sich dann um die Freigabe kümmert.


Du hast es erkannt :wink: :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz