Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
1. Nov 2009
Hier bot sich Finalize halt an, da ja praktisch ein Record in einen anderen Injeziert wurde,
welcher aber vom Aufbau des injezierten Records keine Ahnung hat.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
1. Nov 2009
@alzaimar:
Hier war der Record schon im Tree eingebaut.
New/Dispose reservieren Speicher, geben ihn wieder frei und machen zusätzlich noch die Initialisierung/Finalisierung.
Da der Speicher vom Record aber schon vorhanden war, fehlt hier nur noch die Initialisierung/Finalisierung.
Und eben eine stelle, wo die Finalisierung auch aufgerufen wird.
OnFreeNode scheint ja demnach wohl...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
30. Okt 2009
Er gibt doch aber den String frei und demnach sollte dort auch kein Speicherleck entstehen? :gruebel:
Finalize(NodeData^.Text) sollte NodeData^.Text := ''; entsprechen.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
27. Okt 2009
Ach nee, stimmt ja, der Record wird ja direkt an die Node-Struktur angehängt
nja, zumindestens Freigeben würde ich es so, falls du mal den Record erweiterst und z.B. noch 'nen String einfügst.
Finalize(NodeData^);
Diese NodeDataSize (oder wie das nochmal hieß) hast du auch richtig gesetzt?
Hast du eventuell sowas wie FreeOnCollapse aktiviert?
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by himitsu,
27. Okt 2009
Wie erzeugst du PNodeDate?
genau andersrum mußt du es auch wieder freigeben!
z.B.:
NodeData := GetMem(SizeOf(TNodeData));
Initialize(NodeData);
...
Finalize(NodeData^);