Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Call TList<Procedure of object> (https://www.delphipraxis.net/195460-call-tlist-procedure-object.html)

hzzm 2. Mär 2018 07:32

Delphi-Version: 10 Seattle

Call TList<Procedure of object>
 
Mojje,

in diesem Thread haben wir festgestellt, dass man statt einem TArray<TProcedureOfObject> eine TList<TProcedureOfObject> benutzen muss, weil das Array in diesem Zusammenhang wohl buggy ist.
Ich habe also meine ganze Situation auf
Delphi-Quellcode:
type
  TUpdateProcedure = Procedure of object;
  TUpdateProcedures = TList<TUpdateProcedure>;

var
  UpdateProcedures: TUpdateProcedures;
[...]

begin
  UpdateProcedures := TUpdateProcedures.Create;
  UpdateProcedures.AddRange([UpdateView001, UpdateView002]);
  [...]
  UpdateProcedures[0]; // CALL
end;
umgebuegelt. Ich kann die Liste befuellen, alles scheint zu funktionieren.
Der procedure CALL an sich wird aber nicht ausgefuehrt. Ich sehe nur einen range-check der Liste, sonst passiert gar nichts. Mein Breakpoint in UpdateView001 kommt nicht.

Was ist da los?

Uwe Raabe 2. Mär 2018 07:48

AW: Call TList<Procedure of object>
 
Um den Call auszuführen, musst du die runden Klammern hinter die Procedure/Function schreiben - auch wenn keine Parameter vorhanden sind. Daran unterscheidet der Compiler, ob du die Methode nur referenzierst oder ausführen willst.

Delphi-Quellcode:
UpdateProcedures[0](); // CALL

hzzm 2. Mär 2018 07:53

AW: Call TList<Procedure of object>
 
Danke :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz