Einzelnen Beitrag anzeigen

Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#1

Erfolgsmeldung bei EnumChildWindows

  Alt 19. Mär 2004, 13:02
Kaum ist das eine Problem gelöst, kommt auch schon das nächste.
Ich benutze die Funktion EnumChildWindows. Dank DP habe ich auch relativ schnell gelernt, damit und mit der Callbackfunktion umzugehen.
Aber leider habe ich immer noch ein Problem damit. Folgende Situation:
Ich rufe in einer Funktion die Funktion EnumChildWindows auf. In der Callbackfunktion tue ich etwas, und zwar suche ich nach einem bestimmten Editfeld und trage dort etwas ein. Wenn das funktioniert hat, möchte ich gerne eine Erfolgsmeldung an die aufrufende Funktion zurückgeben. Dazu habe ich mir eine Boolean-Variable deklariert, die true annehmen soll, wenn es funktioniert hat. Das klingt in der Theorie ganz gut, dachte ich mir und probierte es aus.
Das Ergebnis war ernüchternd. Ich wurde zugeworfen mit Zugriffsverletzungen. Zuerst baute ich die Callbackfunktion als Unterfunktion in die aufrufende Funktion ein. Am Anfang der aufrufenden Funktion deklarierte ich meine Boolean-Variable. Etwa so:

Delphi-Quellcode:
procedure PPasswort;
var BoolOk: Boolean;
  function FEnumChilds(hWindow: HWND; lParameter: lparam): boolean; stdcall;
  begin
    // Hier passiert etwas. Bei Erfolg folgende Anweisung:
    BoolOk := true; // Hier krachte es: Zugriffsverletzung
  end;

begin
  if BoolOk = true then
    // Hier passiert noch mehr
end;
Daraus schloss ich, dass die Callbackfunktion nicht auf die Variablen der aufrufenden Prozedur zugreifen kann. Also schlug ich einen anderen Weg ein: Ich nahm die Callbackfunktion aus der Prozedur PPasswort heraus und deklarierte BoolOk als globale Variable. Das Ergebnis war eigentlich kein anderes. Wieder bekam ich eine Zugriffsverletzung.

Jetzt meine Frage: Kann ich von dieser Callbackfunktion aus auf keine Variablen zugreifen, die außerhalb (global) deklariert worden sind? Welche anderen Lösungen gäbe es für mein Problem noch?
  Mit Zitat antworten Zitat