Einzelnen Beitrag anzeigen

Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: TVirtualStringTree AddChild access violation

  Alt 28. Nov 2019, 20:53
Ich habe ein Problem damit zu verstehen, warum ich eine access violation bekomme.
ich bekomme in der Zeile "Item := Tree.AddChild(Item);" ein access violation beim zweiten Schleifendurchlauf. Ich habe darüber LData := Tree.GetnodeData(Item); geschrieben, um zu gucken, ob das Item ein bereits definierter Node ist und Daten sind da. Meines Verständnisses nach müsste das Access Violation in der Zeile bedeutet, dass das Item sich weigert ein neues Child anzunehmen. Das ergibt in meinem Kopf keinen Sinn.
Du hast in deinem Beispiel LNode als PVirtualNode deklariert, benutzt diese aber nicht. Stattdessen weist du die neu erstellte Node deiner Variablen zu, die du als Übergabeparameter bekommen hast. Vermutlich fliegt dir hier etwas um die Ohren. Ändere das mal und schau, ob es funktioniert. Dann siehst du schon mal, ob dein generelles Vorhaben klappt.

ABER: DieDolly hat schon Recht wenn Sie sagt, dass man AddChild nicht benutzt. Zumindest nicht benutzen sollte. RootNodeCount und ChildCount (vom Event InitChildren) ist auf jeden Fall die bessere Wahl. Zudem entfällt das ganze FreeNode() Zeugs. Und du hast die Daten in einer strukturierten Liste und nicht in einer visuellen Komponente gespeichert.
  Mit Zitat antworten Zitat