Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TMemoryStream + Unicode (https://www.delphipraxis.net/52658-tmemorystream-unicode.html)

skyware 1. Sep 2005 04:54


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:
{ 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;
Gruss und Danke im voraus,
Markus

marabu 1. Sep 2005 06:28

Re: TMemoryStream + Unicode
 
Hallo Markus,

das Zwischenspeichern muss wirklich nicht sein:

Delphi-Quellcode:
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;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz