AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMemoryStream + Unicode

Ein Thema von skyware · begonnen am 1. Sep 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
skyware

Registriert seit: 11. Dez 2002
Ort: Wetzikon, Zürich
151 Beiträge
 
Delphi 6 Enterprise
 
#1

TMemoryStream + Unicode

  Alt 1. Sep 2005, 04:54
Hallo zusammen,

ich bin daran meine Applikation auf Unicode Unterstützung umzubauen, und jetzt
hab ich noch ein kleines Problemchen

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???

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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TMemoryStream + Unicode

  Alt 1. Sep 2005, 06:28
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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