Das habe ich genauso. Hier taucht das Problem auf :
Delphi-Quellcode:
if Data^.Table is TTableA then
TTableA(Data^.Table).Caption := LeseFeld // aus TTableA
else
TTableB(Data^.Table).Nr := LeseFeld // aus TTableA
An der Stelle geht es nur um TTableA. Der landet aber im else-Zweig. Deshalb ist anzunehmen, dass zumindest "is TableA" falsch ist. Zu guter Letzt kommt jedenfalls Zugriffsverletzung.
Vielleicht besser etwas mehr :
Delphi-Quellcode:
Node := vstZeigTour.AddChild(nil);
Data := vstZeigTour.GetNodeData(Node);
vstZeigTour.ValidateNode (Node, False);
if assigned(Data) then begin
if Data^.Table is TTour then
TTableA(Data^.Table).Caption := LeseFeld //..
else
TTableB(Data^.Table).Nr := LeseIntFeld //..
end;
Wo soll denn dem Knoten überhaupt gesagt werden, ob es sich um TableA oder TableB handelt ?

Daran wirds wohl liegen.