Autor Beitrag
tmtmtm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Di 21.01.03 01:27 
Hallo zusammen!

Ich habe mal 'ne Frage zum Anzeigen einer MessageBoxEx in einem Delphi 2.0-Programm.

Das Parameter-Format ist mir ja bekannt:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
int MessageBoxEx(

    HWND  hWnd,  // handle of owner window
    LPCTSTR  lpText,  // address of text in message box  
    LPCTSTR  lpCaption,  // address of title of message box  
    UINT  uType,  // style of message box
    WORD  wLanguageId   // language identifier
   );


Deshalb habe ich hier schon mal ein paar eingesetzt:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Var S1,S2:String;

...

S1:='blablabla';
S2:=S1;
MessageBoxEx(Null,PChar(S1),PChar(S2),MB_Applmodal+MB_OK,Lang_Neutral);

...


Aber ständig erhalte ich einen häßlichen "EVariant"-Error (Konvertierungsfehler) beim Benutzen der Strings im PChar-Format. Jedoch erst, wenn ich diese PChars ins MessageBoxEx einbringe. Warum?
Ich verzweifle schon langsam daran! Dabei sollte es so simpel sein. (?)

Wo liegt mein Fehler?

Ach ja: die ganzen Unit-bedingten Dialogs wie z.B. ShowMessage oder MessageDlg kann ich hier wirklich nicht gebrauchen, weil ich keine weiteren Units mit ins Programm schleppen will.

Ich hoffe ihr wisst hier besser bescheid als ich.

Danke schon mal!

MfG Thomas
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.01.03 09:55 
tmtmtm hat folgendes geschrieben:
Aber ständig erhalte ich einen häßlichen "EVariant"-Error (Konvertierungsfehler) beim Benutzen der Strings im PChar-Format.

Würdest du mir glauben, dass das nichts mit den Strings zu tun hat?
Das Problem liegt nämlich hier:
ausblenden Quelltext
1:
2:
MessageBoxEx(NULL { <-- },
  ...

Wenn du hier eine echte Null (als Zahl: 0) einsetzt (für das Desktop-Window), bzw. "Application.Handle" oder "self.Handle" (für das Formular), dann klappt´s auch mit der MessageBoxEx. :)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.01.03 13:07 
Das war wohl Copy and Paste von einem C/C++ Source-Code. :mrgreen:
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 21.01.03 13:14 
Nee, nee, das will ich gar nicht mal unterstellen.
Manchmal irritiert es aber schon. In vielen Fällen schreibt Microsoft Sätze wie
Zitat:
this can be NULL

Und du musst dann gucken, was für ein Typ ist das. Abhängig davon (und natürlich abhängig von der Deklaration, die Borland benutzt) entscheidet sich dann, ob man tatsächlich eine Null oder doch vielleicht nil schreiben muss, usw.
tmtmtm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Di 21.01.03 17:25 
Titel: THX
Thanks!

Klappt jetzt endlich. :D

CU