AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi D2009: Problem mit UTF8String und einzelnem Char
Thema durchsuchen
Ansicht
Themen-Optionen

D2009: Problem mit UTF8String und einzelnem Char

Ein Thema von Zacherl · begonnen am 22. Sep 2008 · letzter Beitrag vom 22. Sep 2008
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:05
Hey,

ich habe einen UTF8String namens ContactStr. Jetzt möchte ich den String folgendermaßen zusammensetzen:

ContactStr := '1' + #$FE + BuddyUIN + #$FE + BuddyName + #$FE; Sehr simpel. Unter D2007 funktioniert auch alles bestens und der erzeugte String lautet wie folgt:

Code:
1þ555888666þZacherlþ
Der selbe Code compiliert unter D2009 gibt mir allerdings immer nur folgende Ausgabe:

Code:
1þ555888666þZacherlþ
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:

Kennt jemand eine Lösung für dieses Problem?

Gruß Zacherl
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#2

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:07
Habe kein Delphi 09 hier, aber versuche mal das Ganze so zu schreiben:

ContactStr := '1' + AnsiChar($FE) + BuddyUIN + AnsiChar($FE) + BuddyName + AnsiChar($FE);
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:08
Hab zwar kein D2009, aber setz doch einfach deinen string als AnsiString zusammen

Delphi-Quellcode:
var
  ContactStr: TAnsiString;
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:10
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

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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#5

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:25
Delphi-Quellcode:
var
  Prefix: Utf8string;
begin
  Prefix := '1'; { sonst ist '1' ein Unicode-String!}
  ContactStr := Prefix + #$FE + BuddyUIN + #$FE + BuddyName + #$FE;
end;
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 16:48
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#7

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 17:37
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.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: D2009: Problem mit UTF8String und einzelnem Char

  Alt 22. Sep 2008, 17:47
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
  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 03:58 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