Zitat von
alzaimar:
Delphi-Quellcode:
Type
TSomeFunction = Function (A,B : TSomeType) : TSomeResult;
Zitat von
Master_BB:
TReadMethod = function(A, B : TObject) : boolean of object;
Wenn ich nicht was übersehen habe, funktionieren deine Lösungen für den OP nicht, weil er Methodenzeiger speichern will, während du normale Prozedurzeiger nimmst?
(Wobei: Falls die Methoden wirklich nur immer als Self.ReadBla aufgerufen werden, könnte man das Ganze vielleicht so umformulieren, dass das Speichern normaler 4-Byte-Funktionszeiger ausreicht.)
Zitat von
alzaimar:
Delphi-Quellcode:
Var
FunctionNames : TStringList;
FunctionPointer : TList;
Procedure AddFunction (aName : String; aFunction : TSomeFunction);
Begin
FunctionNames.Add(aName);
FunctionPointer.Add(aFunction);
End;
Function GetFunction (aName : String) : TSomeFunction;
Begin
Result := TSomeFunction(FunctionPointer[FunctionName.IndexOf(aName)]);
End;
...
AddFunction ('FooBarFunction', @FooBar);
MyResult := GetFunction('FooBarFunction')(A,B);
Dann kann man die Funktionszeiger doch auch gleich in FunctionNames.Objects stecken.