@himitsu:
Es war mir schon klar das ich den String selber in den Stream schreiben muss.
Nur welche Stringtypen verwende ich das es unter den oben genannten Delphi-Version einwandfrei funktioniert und dabei
Unicode unterstüzt ?
Hier ein wenig Code-Bsp.:
Delphi-Quellcode:
{ TDummyTest }
procedure TDummyTest.SaveToStream(AStream: TStream);
Var iLen : SmallInt;
begin
AStream.Position := 0;
AStream.Size := 0;
AStream.Write(FIdent,SizeOf(Integer));
AStream.Write(FKind,SizeOf(Integer));
iLen := Length(FStr1);
AStream.Write(iLen,SizeOf(iLen));
AStream.Write(PChar(FStr1)^,iLen); // Hier PChar oder doch PWideChar ?
AStream.Write(FRes,SizeOf(SmallInt));
end;
procedure TDummyTest.LoadFromStream(AStream: TStream);
procedure ReadStr(Var sTarget : String);
Var iLen : SmallInt;
pch : PChar; // oder PWideChar ?
buffer : array[0..4096] of char; // Alternativ
begin
AStream.Read(iLen,SizeOf(SmallInt));
GetMem(pch,iLen);
try
//AStream.Read(pCh^,iLen);
// alternativ
AStream.Read(buffer[0],iLen);
sTarget := copy(buffer,1,4);
finally
FreeMem(pCh,iLen);
end;
end;
begin
AStream.Read(FIdent,SizeOf(Integer));
AStream.Read(FKind,SizeOf(Integer));
ReadStr(FStr1);
AStream.Read(FRes,SizeOf(SmallInt));
end;
Wie bekomm ich diesen Code, funktionsfähig für alle Zeichensätze und unter D2007 + D2010 lauffähig ?
Danke,
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.