![]() |
Virtual Tree - "Ungültige Zeigeroperation" beim Le
Hallo,
ich habe folgendes Problem, ich hab ein Treeview der einen Record hat mit einem String und einem Index. Der String wird als CellText verwendet, der Index wird intern verwendet. Mein Record
Delphi-Quellcode:
Die Initialisierung sieht so aus:
type
PBaumDaten = ^RBaumDaten; RBaumDaten = Record Text: String; Index: Integer; end;
Delphi-Quellcode:
Freigabe der Daten:
procedure TForm1.vstErgebnisGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
begin NodeDataSize:= SizeOf(PBaumDaten); end;
Delphi-Quellcode:
CellText zuweisen:
procedure TForm1.vstErgebnisFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
Var pDaten: PBaumDaten; begin pDaten:= vstErgebnis.GetNodeData(Node); If Assigned(pDaten) Then Begin pDaten.Text:= ''; pDaten.Index:= 0; End; //If end;
Delphi-Quellcode:
procedure TForm1.vstErgebnisGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
Var pDaten: PBaumDaten; begin pDaten:= Sender.GetNodeData(Node); If Assigned(pDaten) Then CellText:= pDaten.Text; end; Beim leeren (.Clear) tritt der Fehler "Ungültige Zeigeroperation" auf, beim Anhalten springt Delphi zu folgender Zeile im VirtualTree Source:
Delphi-Quellcode:
Virtual Tree 4.8.5
procedure TCustomVirtualStringTree.DefineProperties(Filer: TFiler);
Delphi 2007 Ich komme nicht mehr weiter und weiß nicht wo mein Fehler liegt. Kann mir jemand helfen? Besten Dank! |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Probiere mal:
Delphi-Quellcode:
procedure TForm1.vstErgebnisGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
begin NodeDataSize:= SizeOf(RBaumDaten); end; |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Oh nein! :wall:
VIELEN vielen Dank! Ah! Was für ein Brett vorm Kopf! :oops: :) |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Hallo,
trotzdem sieht dein OnFreeNode komisch aus. Muss man dort nicht den Pointer auch freigeben ? Was sagt denn FastMM4 oder memcheck dazu ? Ausserdem stimmt SizeOf(P) (4 Byte) eigentlich, wenn du in das Data-Feld des VcNode den Pointer und nicht den Record packst. Heiko |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
FreeNode sieht eigentlich gut aus.
Der String wird auf "", wegen dem Speicherproblem mit HugeString und fertig. Das index=0 muss nicht sein. |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Naja, wie sollte den die OnFree-Procedure aussehen?
Das was dort steht hab ich aus einem Tutorial (delphi-treff) übernommen. Ausgenommen dem geistigen Ausrutscher mit SizeOf. FastMM probier ich nachher, bin grad nicht an meinem Rechner. |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Hallo,
Was hast du im OnNodeInit (oder wie auch immer du den Tree initialisiert) gesetzt. Heiko |
Re: Virtual Tree - "Ungültige Zeigeroperation" bei
Ähm. Nichts, ich kannte die procedure bis eben noch nicht mal.
Was gehört dort rein? -Größe des Records ist ja schon bekannt. -... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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