AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit MessageBox

Ein Thema von CalganX · begonnen am 23. Jan 2003 · letzter Beitrag vom 24. Jan 2003
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem mit MessageBox

  Alt 23. Jan 2003, 19:40
Hi,
ich will folgenden Text mit MessageBox ausgeben:
'Der angegebene User ('+CurSelUser+') wurde nicht gefunden.'.
Was mache ich? Ich gebe folgenden Source ein:
MessageBox(hWnd, PChar('Der angegebene User ('+CurSelUser+') wurde nicht gefunden.'), 'Bla, bla', MB_OK or MB_ICONINFORMATION); EAccessViolation => Ende
Need help! Bin kurz vor'm durchdrehen!

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 23. Jan 2003, 19:53
Moin Chris,

wie ist denn CurSelUser deklariert?
Ansonsten sehe ich da nichts, was eine Möglichkeit eines Fehlers bietet.

Oder hast Du MessageBox selber importiert, und stdcall weggelassen?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Udo

Registriert seit: 19. Jan 2003
54 Beiträge
 
Delphi 8 Architect
 
#3
  Alt 23. Jan 2003, 22:01
Bei mir gehts. Schon "hwnd" gecheckt?
Scheib mal
if hWnd <> INVALID_HANDLE_VALUE then davor.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 23. Jan 2003, 22:34
hWnd wird keine EAccessViolation auslösen. Es gibt lediglich an welches fenster lahmgelegt wird. Du kannst da auch 0 übergeben und alles wird laufen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 23. Jan 2003, 22:49
Moin Zusammen,

ergänzend sei erwähnt:
Wenn hwnd ein ungültiges Fensterhandle enthält, wird der Dialog gar nicht erst angezeigt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 24. Jan 2003, 08:39
Hi,
soweit ich mich erinnern kann (bin derzeit in der Schule; kann somit nicht in den Source gucken) ist CurSelUesr als PWideChar oder String deklariert. Ist aber egal, was ich nehme. Wenn ich nicht "PChar(" schreibe, dann kommt der Compile-Error "Incompatible types "string" and "PAnsiChar". Problem ist, dass CurSelUser Buffer in einer SendMessage-Anweisung ist (siehe dazu Beitrag "Problem mit NetUserGetInfo").

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 24. Jan 2003, 13:18
Deklarier den Buffer mal als array[0..255] of Char. Und dann sehen wir weiter. Wie ich die Benutzer-Infos bekomme habe ich ja gepostet. Aber hier noch mal:
Delphi-Quellcode:
SendDlgItemMessage(hDlg, IDC_CB, CB_GETLBTEXT, 0, Integer(@szBuffer));
GetUserInfo(String(szBuffer));
0, weil wir gleich den ersten anzeigen wollen. Und dann geht es so weiter:
Delphi-Quellcode:
procedure GetUserInfo(sUser: String);
var
  s : String;
  ui3 : Pointer;
begin
  if sUser <> ''then
  begin
    if NetUserGetInfo(nil, PWideChar(WideString(sUser)), 3, ui3) = NERR_SUCCESS then
    begin
      s := String(PUserInfo3(ui3)^.usri3_name);
      SetDlgItemText(hApp, 103, @s[1]);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8
  Alt 24. Jan 2003, 13:21
So, nach einem erholsamen Schultag, gibt es folgendes zu bemerken:
1. CurSelUser ist ein String
2. Der gleiche Source wie oben
3. MessageBox nehme ich aus der Unit Windows und deklariere die Funktion/Prozedur nirgends, da bereits in Unit Windows drin
4. Fehlerausgabe:
Zitat:
---------------------------
Application Error
---------------------------
Exception EAccessViolation in module OSInfo.exe at 00003E46.

Access violation at address 00403E46 in module 'OSInfo.exe'. Read of address 696D6439.


---------------------------
OK
---------------------------
Chris

PS: Hotkey zum kopieren der aktuellen Fehlermeldung gefunden!!! *freu*

PSS: @Luckie: Ich denke du bist im falschen Beitrag.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9
  Alt 24. Jan 2003, 13:36
Nein bin ich nicht. CurSelUser ist doch der Buffer für die Listbox, der dann den Benutzer enthält oder? Und genau den sollst du wie beschrieben deklarieren. Damit du mit deinem PWideChar keien Probleme bekommst, habe ich dir gepoatet, wie ich dann weiter gemacht habe. Nämlich der entsprechende Prozedur den Parameter als String übergeben. Und dazu mußt du den Buff of Char mit String casten, damit alles sauber läuft.

Wenn CurSelUser ein String ist und da der gewählte Eintrag aus der Listbox rein soll, dann kann das nicht klappen. Du brauchst dafgür einen Zeiger und ein Zeichen-Array ist ein Zeiger ein simpler String aber nicht.

Deswegen noch mal deklarier den Buffer als array[0..255] of Char. Dan bastelst du dir deine Message zusammen:
Delphi-Quellcode:
var
  s : String;
begin
  ...
  s := 'Blabal'+String(CurSelUser)+'Blubblub';
  Messagebox(hWnd, pointer(s), ' Meine Nachri9cht', 0);
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 10:45 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