![]() |
WideString in MessageBox ausgeben?
Ich würde gerne einen Text, der als WideString (wg. multilanguage) vorliegt, in einer MessageBox anzeigen.
Das Problem ist, dass ein PChar erwartet wird und ich es auch durch diverse Castings nicht geschafft habe, den Text korrekt darzustellen. Kann jemand helfen?
Delphi-Quellcode:
var myTitle, myText : WideSTring;
//[...] if Application.MessageBox( myText, myTitle, MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = IDYES then //ja ... |
Re: WideString in MessageBox ausgeben?
Hi, versuchs mal so :
Delphi-Quellcode:
greetz
PCHar(string(widestr))
|
Re: WideString in MessageBox ausgeben?
Ganz einfach in nen PChar umwandeln. ;)
Delphi-Quellcode:
if Application.MessageBox(PChar(myText), PChar(myTitle), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = IDYES then
|
Re: WideString in MessageBox ausgeben?
Warum nimmst du nicht die API Funktion MessageBoxW? Dann kann man den String auch noch lesen, wenn er ausgegeben wird.
|
Re: WideString in MessageBox ausgeben?
Beide Vorschläge führen aber dazu, dass die Zeichen, die nicht in String oder Char enthalten sind, verloren gehen (deshalb ja auch WideString).
Ich habe gerade festgestellt, dass "MessageBoxW" scheinbar existiert, aber wohl nicht dokumentiert ist. Ich werde das mal testen. edit: Und wie ich sehe, meint Luckie das gleiche. |
Re: WideString in MessageBox ausgeben?
Wozu Dokumentation? Die Parameter sind identisch mit der von MessageBox, bis auf den Unterschied, dass es eben Unicode-Zeichen sind.
Delphi-Quellcode:
var
s: WideString; begin s := 'Hello World'; MessageBoxW(Handle, PWideChar(s), 'Titel', 0); |
Re: WideString in MessageBox ausgeben?
So scheint das ganze zu funktionieren:
Delphi-Quellcode:
"Application." musste weg und der erste Parameter musste ein Handle (hWnd : HWND) sein. Die 0 scheint zu gehen, ich hoffe, das passt so.
var myTitle, myText : WideString;
//[...] if MessageBoxW(0, PWideChar(myText), PWideChar(myTitle), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = IDYES then edit: @Luckie, naja, exakt gleich sind sie eben nicht. ;) |
Re: WideString in MessageBox ausgeben?
Zitat:
|
Re: WideString in MessageBox ausgeben?
Ich habe auch nie von der Methode MessageBox von TApplication gesprochen, sondern von der API-Funktion MessageBox(W). Die Methode MessageBox von TApplication kapselt übrigens nur die entsprechende API-Funktion. Und hier ist die Dokumenattion:
![]() BTW solltest du als Handle schon das Fenster angeben aus dem die Messagebox aufgerufen wird. |
Re: WideString in MessageBox ausgeben?
Ihr habt ja Recht. Sorry und Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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