Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Wenn man keine Rücksicht auf Abwärtskompatibilität legen muss, dann kann man alles in eine normale anonyme Methode packen:
TAnonWrapper = class
class function Wrap<T>( AProc: TProc<T>; Arg: T ) : TProc;
class function Wrap<T,TResult>( AFunc: TFunc<T,TResult>; Arg: T ) : TFunc<TResult>;
// das kann man jetzt mit beliebig vielen Argumenten weiterspinnen
end;
class function...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Weil der Typ nicht passt.
var
TuWas: TAsyncCallArgGenericMethod<Integer>;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Wenn die Anonymen dort noch gar nicht verwendet werden, dann wird es eher weniger :stupid:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Dann kannst du Methoden, Proceduren und anonyme Methoden übergeben.
reference to deckt alle drei Fälle ab.
TFooMethod = procedure of object; // NUR Methoden
TFooProc = procedure; // NUR Prozeduren
TFooAnon= reference to procedure; // Methoden, Prozeduren, Anonyme Methoden
Jetzt klar?
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Dann kann man die ja als overload noch hinzufügen :wink:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Jo, dann gehen da nur Methoden rein - ob der Typ wohl deswegen TAsyncCallArgGenericMethod (bemerke Method) heißt? :stupid:
Wenn du das ändern möchtest dann einfach
// TAsyncCallArgGenericMethod<T> = function(Arg: T): Integer of object;
TAsyncCallArgGenericMethod<T> = reference to function(Arg: T): Integer;
dann geht da alles rein.
(Den Namen muss man nicht ändern, sollte man aber)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
8. Mai 2016
Was erwartet Invoke denn als Argument? Daran kann man sehen was geht und was nicht