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.