Hallo,
zum speichern/laden von strings eines Virtual String Trees schreibe ich im Ereignis:
.VSTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream)
Delphi-Quellcode:
procedure SchreibeString(s:string);
var
L: integer;
begin
//L:= Length(s); Stream.Write(L, SizeOf(s)); Stream.Write(PChar(s)^, L); {geht in Delphi5}
L:= Length(s);
Stream.Write(L, SizeOf(s));
Stream.Write(PWideChar(s)^, L);
end;
.VSTLoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode; Stream: TStream);
Delphi-Quellcode:
procedure LeseString(var s:string);
var
L: integer;
begin
//Stream.Read(L, SizeOf(s)); SetLength(s, L); Stream.Read(PChar(s)^, L); {geht in Delphi5}
Stream.Read(L, SizeOf(s));
SetLength(s, L);
Stream.Read(PWideChar(s)^, L);
end;
In Delphi2010 klappt das so nicht mehr.
Die Änderung PChar -> PWideChar reicht wohl nicht, was ist hier falsch?