![]() |
Delphi-Version: 10.2 Tokyo
Aufruifen von Generic Anonymous methods
Ich habe
Code:
Das funktioniert gut. Daselbe wollte ich für Methoden mit einem Parameter machen:
TBaseForm = class(TForm)
procedure ShowHourGlass(Proc: TProc); ... end; TbaseForm.ShowHourGlass(Proc: TProc); begin Proc; end;
Code:
Aber wie rufe ich die Prozedur dann auf? Was übersehe ich?
TBaseForm = class(TForm)
procedure ShowHourGlass(Proc: TProc<string>); ... end; TbaseForm.ShowHourGlass(Proc: TProc<string>); begin Proc(?); end; Danke für jede Erleuchtung! |
AW: Aufruifen von Generic Anonymous methods
Delphi-Quellcode:
TProc<T> = reference to procedure (Arg1: T);
TProc<T1,T2> = reference to procedure (Arg1: T1; Arg2: T2); TProc<T1,T2,T3> = reference to procedure (Arg1: T1; Arg2: T2; Arg3: T3); TProc<T1,T2,T3,T4> = reference to procedure (Arg1: T1; Arg2: T2; Arg3: T3; Arg4: T4); Folglich:
Delphi-Quellcode:
Proc('Hallo Welt');
|
AW: Aufruifen von Generic Anonymous methods
Das hilft mir nicht. Ich möchte ja den Parameter weiterreichen.
Ich habe woanders eine Prozedur TuWas(s:string); und diese übergebe ich an ShowHourGlass(TuWas('Hallo')); Ich hätte ja auf Proc(Arg1); getippt, aber das war falsch. |
AW: Aufruifen von Generic Anonymous methods
Zitat:
|
AW: Aufruifen von Generic Anonymous methods
Ich verstehe nicht ganz. Du willst ShowHourGlass(..) deine TProc<String> geben und was der String sein soll? Dann brauchst du zwei Parameter.
procedure ShowHourGlass(proc: TProc<String>; procParameter: String); begin proc(procParameter); end; |
AW: Aufruifen von Generic Anonymous methods
Mit einer parameterlosen Prozedur geht das einfach:
proc A; begin end; proc B(Proc:TProc); begin Proc; end; Der Aufruf: B(A); Wie geht das, wenn A Parameter hat? proc A(s:string); proc B(Proc:TProc<string>); Der Aufruf: B(A('x')); Wie sieht die Implementierung in B aus? proc B(Proc:TProc<string>); begin Proc(?); < --- end; |
AW: Aufruifen von Generic Anonymous methods
Nochmal: Der Aufruf "B(A('x'))" heißt: Ich rufe Methode B auf und stecke den Rückgabewert vom Aufruf A('x') als Parameter rein. A gibt aber überhaupt nichts zurück, es ist eine
Delphi-Quellcode:
, keine
procedure
Delphi-Quellcode:
. Sie hat keine Rückgabe.
function
Kann es sein dass du nicht nach TProc<T> suchst sondern nach TFunc<T>? Ansonsten, falls nicht: Entweder du findest dich damit ab dein B(..) um den String als Parameter erweitern zu wollen, oder du machst es so:
Delphi-Quellcode:
was gleichwertig wäre mit
B(
procedure() begin A('x'); end );
Delphi-Quellcode:
var
c: TProc; begin c := procedure() begin A('X'); end; A(c); end; |
AW: Aufruifen von Generic Anonymous methods
Zitat:
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz