![]() |
VirtualTreeView - Freigabe der Daten
Hallo.
Wenn ich bei VirtualTreeView Daten wieder freigeben möchte, steht dazu in der Doku: Zitat:
Vielen Dank |
Re: VirtualTreeView - Freigabe der Daten
entweder .free oder integer:= 0; boolean := false;..
|
Re: VirtualTreeView - Freigabe der Daten
Du übergibst die Daten ja als Zeiger und solche werden mit Dispose freigegeben.
[edit] Nachtrag: Dispose, wenn sie mit New angelegt wurden, bei GetMem mit FreeMem freigeben. [/edit] |
Re: VirtualTreeView - Freigabe der Daten
Da stehe ich jetzt aber etwas auf dem Schlauch....
Erst definier ich mir mein Record:
Delphi-Quellcode:
PTreeData = ^TTreeData;
TTreeData = record Tag : Integer; Conflict : Boolean; Column : array[0..6] of string; end; Dann mach ich mir ein paar Nodes mit den Daten mit dieser Funktion:
Delphi-Quellcode:
Ich habe also weder new noch getmem genutzt.
function TVirtualStringTreeBFInfo.AddVSTStructure(AVST : TCustomVirtualStringTree;
ANode : PVirtualNode; ARecord : TTreeData): PVirtualNode; var pData : PTreeData; begin Result := AVST.AddChild(ANode); pData := AVST.GetNodeData(Result); Avst.ValidateNode(Result, False); pData^.Conflict := ARecord.Conflict; pData^.Tag := ARecord.Tag; pData^.Column[0] := ARecord.Column[0]; pData^.Column[1] := ARecord.Column[1]; pData^.Column[2] := ARecord.Column[2]; pData^.Column[3] := ARecord.Column[3]; pData^.Column[4] := ARecord.Column[4]; pData^.Column[5] := ARecord.Column[5]; pData^.Column[6] := ARecord.Column[6]; end; :?: :?: |
Re: VirtualTreeView - Freigabe der Daten
Hallo Viktorii,
für die Freigabe der Daten genügt es in deinem Fall, den Record in der Behandlungsroutine für das Ereignis OnFreeNode zu finalisieren:
Delphi-Quellcode:
Nur wenn der Record Zeiger auf Speicherbereiche enthält, die du manuell angefordert hast, musst du diesen Speicher vor dem Finalisieren auch manuell wieder freigeben.
procedure TVirtualStringTreeBFInfo.AVSTFreeNode (
Sender : TBaseVirtualTree; Node : PVirtualNode ); var Data : PTreeData; begin Data := Sender.GetNodeData(Node); Finalize (Data^); end; Gruß Hawkeye |
Re: VirtualTreeView - Freigabe der Daten
Normal brauchst du nicht freigeben, es sei den du nutzt Zeiger Typen.
Also Strings und alles was von TObject vererbt ist. Schau die mal das Stammtischvideo zum VST an. Dort zeige ich mit dem FastMM / VST die Tricks. |
Re: VirtualTreeView - Freigabe der Daten
Zitat:
|
Re: VirtualTreeView - Freigabe der Daten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz