![]() |
D2009: Problem mit UTF8String und einzelnem Char
Hey,
ich habe einen UTF8String namens ContactStr. Jetzt möchte ich den String folgendermaßen zusammensetzen:
Delphi-Quellcode:
Sehr simpel. Unter D2007 funktioniert auch alles bestens und der erzeugte String lautet wie folgt:
ContactStr := '1' + #$FE + BuddyUIN + #$FE + BuddyName + #$FE;
Code:
Der selbe Code compiliert unter D2009 gibt mir allerdings immer nur folgende Ausgabe: :wall:
1þ555888666þZacherlþ
Code:
Ich verstehe das Problem nicht ganz. Vermutlich wird das erste $FE Zeichen fälschlicherweise in ein Unicode UTF8 Format konvertiert, obwohl dies nicht nötig wäre. Nur warum werden die weiteren $FE Zeichen nicht auch konvertiert und vor allem:
1þ555888666þZacherlþ
Kennt jemand eine Lösung für dieses Problem? Gruß Zacherl |
Re: D2009: Problem mit UTF8String und einzelnem Char
Habe kein Delphi 09 hier, aber versuche mal das Ganze so zu schreiben:
Delphi-Quellcode:
ContactStr := '1' + AnsiChar($FE) + BuddyUIN + AnsiChar($FE) + BuddyName + AnsiChar($FE);
|
Re: D2009: Problem mit UTF8String und einzelnem Char
Hab zwar kein D2009, aber setz doch einfach deinen string als AnsiString zusammen :-)
Delphi-Quellcode:
var
ContactStr: TAnsiString; |
Re: D2009: Problem mit UTF8String und einzelnem Char
Ich werde das mal testen. Wobei ich vermute das dies nichts bringen wird, da ich ihn einer Funktion übergebe, die einen UTF8String als Parameter erwartet. Demnach wird dann ja wieder alles erneut konvertiert :mrgreen:
Edit: Selbst als AnsiString deklariert und mit dem Tip AnsiChar() zu verwenden, wird das erste Zeichen nach wie vor falsch kodiert. Und dies sogar schon bevor ich den String der anderen Funktion übergebe. :gruebel: |
Re: D2009: Problem mit UTF8String und einzelnem Char
Delphi-Quellcode:
var
Prefix: Utf8string; begin Prefix := '1'; { sonst ist '1' ein Unicode-String!} ContactStr := Prefix + #$FE + BuddyUIN + #$FE + BuddyName + #$FE; end; |
Re: D2009: Problem mit UTF8String und einzelnem Char
Werde ich gleich mal testen. Aber wie erklärt sich das? Da ich ContactStr schon als UTF8String deklariert habe, sollte Delphi doch automatisch eine Konvertierung durchführen oder nicht?
Edit: Es funktioniert tatsächlich :) Vielen Dank! Ne Erklärung wäre noch cool .. Hab mit dem $FE Zeichen noch andere Probleme. Weise ich z.b. einen UTF8String, der ein $FE Zeichen enthält einem "normalen", also ab D2009 Unicode String zu, so wird das Zeichen einfach in den altbekannten Kasten konvertiert. Gibts da einen ähnlichen Trick? |
Re: D2009: Problem mit UTF8String und einzelnem Char
Also ich vermute folgendes (für exakte Antworten sollte man jemanden von CodeGear fragen):
Das Konstrukt "'1' + #$FE" wird vom Compiler bereits während des Compilierens zusammengefasst. D2009 interpretiert '1' als Unicode-String, daher wird das darauf folgende "#$FE" auch als Unicode-Zeichen interpretiert. Ich muss aber zugeben, daß das Verhalten des Compilers hier nicht unbedingt einsichtig ist und eventuell sogar ein echter Bug vorliegt. Dein zweites Problem kann ich hier nicht nachvollziehen. Ein Beispiel wäre gut. |
Re: D2009: Problem mit UTF8String und einzelnem Char
Denke mal das kann man schon als Bug abstempeln, da der Zielstring ja ganz klar als UTF8 deklariert wurde.
Ich versuche mal ein einfaches Beispiel für den zweiten Fehler zu finden. Poste ich gleich .. Gruß Zacherl |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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