![]() |
Messagebox mit japanischen Zeichen
moin, moin oder für manche auch einen guten Abend.
bin gerade von Delphi 7 auf XE umgestiegen. Bei einer alten Quelle bekomme ich jetzt bei der Textanzeige in der Messagebox jap. Zeichen. Dieses geschieht nur wenn ich den Anzeigetext vorher mit PChar oder PWChar zusammengesetzt habe. Wenn der Anzeigetext direkt übergeben wird ist alles OK.
Delphi-Quellcode:
Idee gesucht ???:(
MessageBox(0, PChar('Zeile 1' + #13 + #13 + 'Zeile 2' ),
'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL); |
AW: Messagebox mit japanischen Zeichen
Ich würde die Nachricht immer erst in einem String zusammenbauen und dann erst einer Funktion die einen PChar erwartet übergeben.
Das vereinfacht ausserdem das Debuggen weil man genau sieht wie der zusammengesetzte String aussieht (wenn man den Mauszeiger drüber hält).
Delphi-Quellcode:
var
msg : string; begin msg := 'Zeile 1' + #13#13 + 'Zeile 2'; MessageBox(0, msg, 'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL); |
AW: Messagebox mit japanischen Zeichen
Bringt der Compiler auch eine Warnung?
|
AW: Messagebox mit japanischen Zeichen
War da nicht was mit String vs. WideString vs. PChar und so? Ich meine: japanische Schriftzeichen in einem Legacy-Projekt nach Umstieg von D7 nach XE schreit doch gerade nach diesem typischen Konvertierungsproblem, oder?
Edit: Oder war das erst ab XE2? |
AW: Messagebox mit japanischen Zeichen
moin, moin,
wenn ich das ganze auf einen String lege meckert Delphi, bezüglich der Typen, denn es wird von der Messagebox kein String sondern ein WhideChar erwartet. Kann jemand mit der Konvertierung weiterhelfen? :? |
AW: Messagebox mit japanischen Zeichen
Delphi-Quellcode:
PWideChar('Text');
|
AW: Messagebox mit japanischen Zeichen
Zitat:
Delphi-Quellcode:
p.s. ich würde ebenfalls hier PWideChar einsetzen
procedure TForm1.FormCreate(Sender: TObject);
begin MessageBox(0, PChar('Zeile 1' + #13 + #13 + 'Zeile 2' ), 'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL); end; |
AW: Messagebox mit japanischen Zeichen
Ich habs mit einem MiniProjekt versucht : in Delphi2007 erstellt und nach XE rübergenommen, auch problemlos (nix japanisch), das muss noch irgendwas anderes sein.
Kannst du es ebenfalls mit einer Minianwendung nachvollziehen, juniorA? |
AW: Messagebox mit japanischen Zeichen
Vermutung:
Du hast so etwas...
Delphi-Quellcode:
Dabei sollte der Compiler aber auch warnen mit "W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar".
var
a: AnsiString; begin a := ... MessageBox(0, PChar(a), 'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL); Pack deinen String vorher einfach in eine Variable vom Typ String, nicht AnsiString, wenn das das Problem ist. |
AW: Messagebox mit japanischen Zeichen
Man kann auch
Delphi-Quellcode:
und
MessageBox(0, PChar(String(a)),
Delphi-Quellcode:
machen.
MessageBox(0, PChar(String(a + b)),
Bei den StringTypen wird da nicht gegastet, sondern eine Konvertierung eingebaut, wenn es zwischen ANSI und Unicode wechselt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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-2025 by Thomas Breitkreuz