Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Messagebox mit japanischen Zeichen (https://www.delphipraxis.net/177586-messagebox-mit-japanischen-zeichen.html)

juniorA 14. Nov 2013 18:19

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:
    MessageBox(0, PChar('Zeile 1' + #13 + #13 + 'Zeile 2' ),
               'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL);
Idee gesucht ???:(

sx2008 14. Nov 2013 19:17

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);

Bernhard Geyer 14. Nov 2013 20:51

AW: Messagebox mit japanischen Zeichen
 
Bringt der Compiler auch eine Warnung?

Furtbichler 15. Nov 2013 06:41

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?

juniorA 15. Nov 2013 07:24

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?

:?

baumina 15. Nov 2013 07:27

AW: Messagebox mit japanischen Zeichen
 
Delphi-Quellcode:
PWideChar('Text');

mjustin 15. Nov 2013 07:31

AW: Messagebox mit japanischen Zeichen
 
Zitat:

Zitat von juniorA (Beitrag 1235935)
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:
    MessageBox(0, PChar('Zeile 1' + #13 + #13 + 'Zeile 2' ),
               'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL);

Mit Delphi 2009 habe ich das Problem nicht. Der Dialog sieht auf WIndows 7 normal aus. Es werden auch keine Compilerwarnungen oder Hinweise ausgegeben. Vielleicht ein Problem das speziell XE betraf?

Delphi-Quellcode:
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;
p.s. ich würde ebenfalls hier PWideChar einsetzen

baumina 15. Nov 2013 07:36

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?

jaenicke 15. Nov 2013 07:57

AW: Messagebox mit japanischen Zeichen
 
Vermutung:
Du hast so etwas...
Delphi-Quellcode:
var
  a: AnsiString;
begin
  a := ...
  MessageBox(0, PChar(a),
    'Hinweis', MB_ICONINFORMATION or MB_OK or MB_SYSTEMMODAL or MB_APPLMODAL);
Dabei sollte der Compiler aber auch warnen mit "W1044 Bedenkliche Typumwandlung von AnsiString in PWideChar".

Pack deinen String vorher einfach in eine Variable vom Typ String, nicht AnsiString, wenn das das Problem ist.

himitsu 15. Nov 2013 08:21

AW: Messagebox mit japanischen Zeichen
 
Man kann auch
Delphi-Quellcode:
MessageBox(0, PChar(String(a)),
und
Delphi-Quellcode:
MessageBox(0, PChar(String(a + b)),
machen.

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 14:38 Uhr.
Seite 1 von 2  1 2      

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