Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi stream to widestring (https://www.delphipraxis.net/156773-stream-widestring.html)

amg79 14. Dez 2010 15:05

Delphi-Version: 2007

stream to widestring
 
Hallo,
ich habe folgendes Problem:

Ich speichere einen Text (mit UTF-8 Zeichen) in einem MemoryStream ==> Text
Nach Ausgabe des Memorystreams in eine Textdatei (stream.saveToFile('test.txt')) werden dort alle Zeichen korrekt dargestellt.
Ich benötige den Streaminhalt jedoch in einem widestring.
Mit TReader bekomme ich den Fehler "ungültiger Eigenschaftswert". (siehe Funktion StreamToWideString)
Hat jemand einen Lösungsansatz? Ziel ist es, dass alle UTF-8 Zeichen korrekt dargestellt werden.

Delphi-Quellcode:
procedure TForm1.Test;
var
  Text : TMemoryStream;
  ws : widestring;
begin
Text := TMemoryStream.Create;
(query1.FieldByName('TestBobfeld') as TBlobField).SaveToStream(Text);

ws := StreamToWideString(Text);
end;

function TForm1.StreamToWideString(AStream : TMemorystream): WideString;
var
  r : TReader;
begin
 AStream.Position := 0;
 r := TReader.Create(AStream,AStream.Size);
 ws := r.ReadWideString;
 result := ws;
 r.free
end;

samso 14. Dez 2010 16:21

AW: stream to widestring
 
Zunächst herzlich willkommen in der netten "Delphi-Praxis"

ich würde einfach den String manuell umwandeln. Etwa so:

Delphi-Quellcode:
  ws := UTF8Decode(query1.FieldByName('TestBobfeld').Value);

mkinzler 14. Dez 2010 17:55

AW: stream to widestring
 
Und verwende bitte in der Zukunft. Code-Tags ( im speziellen den Delphi-Tag bei Delphi/Pascal-Code)

amg79 15. Dez 2010 08:46

AW: stream to widestring
 
Funktioniert, Danke! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 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