Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: Was ist eine Callback Funktion

  Alt 22. Apr 2006, 13:45
Ich überarbeite gerade meine Unit MpuNTU.pas mit ihren Callback-Funktionen. Dabei erweitere ich die eigentliche Funktion, um einen zusätzlichen Parameter, damit der Benutzer der Callback-Funktion weitere, beliebige Daten mitgeben kann. Das sieht dann so aus:

Delphi-Quellcode:
type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = record
    lb: TListbox;
  end;

function EnumUserCallback(Username: string; cntUsers: Integer; Data: Pointer): Boolean;
begin
  PMyEnumParam(Data)^.lb.Items.Add(Username);
  Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Param: TMyEnumParam;
begin
  Param.lb := Listbox1;
  EnumUsers('', FILTER_NORMAL_ACCOUNT, EnumUserCallback, @Param);
end;
Jetzt meine Frage. EnumWindows macht es genauso, nur da ist der zusätzliche Parameter als LPARAM, also Cardinal, deklariert, ich verwende als Datentyp einen Pointer, weil ich dachte, da kann ich alles reinstopfen und wer weiß, was ein zukünftiger Benutzer der Unit damit machen will. Allerdings könnte man einen Pointer auch zu einem Integer casten, wie man es bei EnumWindow machen würde, wenn man obiges Beispiel nimmt. Ist das halo gehupft wie gesprungen oder was spricht für einen Pointer bzw. Integer?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat