![]() |
TMemoryStream + Unicode
Hallo zusammen,
ich bin daran meine Applikation auf Unicode Unterstützung umzubauen, und jetzt hab ich noch ein kleines Problemchen :drunken: Es geht um den TMemoryStream...hier 2 Prozeduren die noch sehr unschön sind. Und zwar möcht ich eigentlich einen Unicode String (THTString = type of widestring) in ein MemoryStream (THTMemoryStream = class(TMemoryStream) schreiben. Da ich bisher keine Lösung dafür gefunden habe bin ich über ein temporäres File gegangen. Sprich ich habe den Unicode String schnell in ein File geschrieben und ihn dann wieder so geladen. Kann jemand eine elegantere Lösung??? :gruebel:
Delphi-Quellcode:
Gruss und Danke im voraus,
{ THTMemoryStream.SetData:
-------------------------------------------------------------------------------} procedure THTMemoryStream.SetData(const AData: THTString); var xStringList : THTStringList; xFilename : THTString; begin xFilename := GHTObjectList_ApplicationList.PathTemp + getGUIID + cFIELNAME_EXTENSION_XML; xStringList := THTStringList.Create; try xStringList.Text := AData; xStringList.SaveToFile(xFilename); LoadFromFile(xFilename); HTDeleteFile(xFilename); finally HTFreeAndNil(xStringList); end; end; { THTMemoryStream.GetData: -------------------------------------------------------------------------------} function THTMemoryStream.GetData: THTString; var xStringList : THTStringList; xFilename : THTString; begin xFilename := GHTObjectList_ApplicationList.PathTemp + getGUIID + cFIELNAME_EXTENSION_XML; xStringList := THTStringList.Create; try SaveToFile(xFilename); xStringList.LoadFromFile(xFilename); HTDeleteFile(xFilename); Result := xStringList.Text; finally HTFreeAndNil(xStringList); end; end; Markus |
Re: TMemoryStream + Unicode
Hallo Markus,
das Zwischenspeichern muss wirklich nicht sein:
Delphi-Quellcode:
Grüße vom marabu
var
ms: TMemoryStream; ws: WideString; begin ms := TMemoryStream.Create; // Schreiben ws := 'Das ist eigentlich ganz einfach - äöüÄÖÜß'; ms.Write(ws[1], length(ws) shl 1); // Lesen ms.Position := 0; SetLength(ws, ms.Size shr 1); ms.Read(ws[1], ms.Size); ShowMessage(ws); ms.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz