AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WideString in MessageBox ausgeben?
Thema durchsuchen
Ansicht
Themen-Optionen

WideString in MessageBox ausgeben?

Ein Thema von CodeX · begonnen am 15. Aug 2006 · letzter Beitrag vom 15. Aug 2006
Antwort Antwort
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#1

WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:25
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 ...
  Mit Zitat antworten Zitat
_rEdoX

Registriert seit: 2. Jun 2006
Ort: Bochum
24 Beiträge
 
Delphi 7 Professional
 
#2

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:30
Hi, versuchs mal so :

PCHar(string(widestr)) greetz
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:30
Ganz einfach in nen PChar umwandeln.

if Application.MessageBox(PChar(myText), PChar(myTitle), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = IDYES then
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:35
Warum nimmst du nicht die API Funktion MessageBoxW? Dann kann man den String auch noch lesen, wenn er ausgegeben wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#5

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:38
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:42
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);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#7

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:44
So scheint das ganze zu funktionieren:
Delphi-Quellcode:
var myTitle, myText : WideString;
//[...]
if MessageBoxW(0, PWideChar(myText), PWideChar(myTitle), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) = IDYES then
"Application." musste weg und der erste Parameter musste ein Handle (hWnd : HWND) sein. Die 0 scheint zu gehen, ich hoffe, das passt so.

edit: @Luckie, naja, exakt gleich sind sie eben nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:46
Zitat von CodeX:
edit: @Luckie, naja, exakt gleich sind sie eben nicht.
Sind sie schon. Du darfst jedoch nicht die Methode MessageBox der VCL-Klasse TApplication mit der Win32-API-Funktion vergleichen. Es gibt ja auch 'ne MessageBox-Funktion in der Win32-API.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:50
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: http://msdn.microsoft.com/library/de...messagebox.asp

BTW solltest du als Handle schon das Fenster angeben aus dem die Messagebox aufgerufen wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#10

Re: WideString in MessageBox ausgeben?

  Alt 15. Aug 2006, 14:56
Ihr habt ja Recht. Sorry und Danke!
  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 07:47 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