in einem VirtualStringTree lade ich Daten von Nodes wie folgt:
Code: Alles auswählen
procedure TForm1.GewerkeLoadNode(Sender: TBaseVirtualTree;
Node: PVirtualNode; Stream: TStream);
var
Data: PGewerkData;
aLength: Integer;
begin
Data := Sender.GetNodeData(Node);
if not Assigned(Data) then Exit;
Stream.Read(aLength, SizeOf(aLength));
SetLength(Data^.GewName, aLength);
Stream.Read(Data^.GewName[1], aLength);
...
end;
Wie gesagt, bisher ging das. Nun frage ich mich, ob dies ein Bug ist oder ob das Verhalten gewollt ist und ich selber prüfen muss, ob ein leerer String vorliegt.
So funktioniert es:
Code: Alles auswählen
Stream.Read(aLength, SizeOf(aLength));
SetLength(Data^.GewName, aLength);
if aLength > 0 then
Stream.Read(Data^.GewName[1], aLength);