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?