Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Function/Procedure selbst als Parameter übergeben? (https://www.delphipraxis.net/24171-function-procedure-selbst-als-parameter-uebergeben.html)

Kostas 16. Jun 2004 16:53


Function/Procedure selbst als Parameter übergeben?
 
Hallo Zusammen,

wie kann ich eine Procedure oder Function als Parameter einer
anderen Procedure oder Function übergeben?

.. Ist etwas schwer zu beschreiben ein Beispiel :-)

Procedure ProcInnen;
begin
...
end;

procedure Aussen(MyProc :was?); <<<als Parameter ProcInnen übergeben
if irgendwas then MyProc <<< aufrufen
...
end;

Gruß Kostas

alcaeus 16. Jun 2004 17:05

Re: Function/Procedure selbst als Parameter übergeben?
 
Du kannst den Rückgabewert einer Funktion als Parameter einer anderen Funktion übergeben. Eine Prozedur kannst du aber meines Wissens nach nicht, da diese ja keinen Rückgabewert hat. Und Parameter sind nunmal für Werte geschaffen worden.

Greetz
alcaeus

PS: Ich weiß nicht ob ich dich genau verstanden hab, erklärs im Notfall genauer...

shmia 16. Jun 2004 17:13

Re: Function/Procedure selbst als Parameter übergeben?
 
Zitat:

Zitat von Kostas
wie kann ich eine Procedure oder Function als Parameter einer
anderen Procedure oder Function übergeben?

.. Ist etwas schwer zu beschreiben ein Beispiel :-)

Procedure ProcInnen;
begin
...
end;

procedure Aussen(MyProc :was?); <<<als Parameter ProcInnen übergeben
if irgendwas then MyProc <<< aufrufen
...
end;

Delphi-Quellcode:
// TProcedure ist in SysUtils deklariert
procedure Aussen(MyProc :TProcedure);
begin
   if Assigned(MyProc) then  // prüfe auf nil Zeiger
      MyProc;  // aufrufen
end;

// Test
begin
   Aussen(ProcInnen);
   Aussen(nil);       // auch zulässig
   Aussen(Randomize); // auch zulässig, da Randomize dem Typ TProcedure entspricht
end;
Ein Beispiel, bei dem die Procedure auch Parameter hat findest du unter Code Library (nächster oder vorhergehender Arbeitstag)

Skyruner2 16. Jun 2004 20:15

Re: Function/Procedure selbst als Parameter übergeben?
 
und wofür brauch man soetwas??

Chewie 16. Jun 2004 20:45

Re: Function/Procedure selbst als Parameter übergeben?
 
Callback-Prozeduren und Events. Ohne das gäb es keine Nachrichtenfunktionen und auch keine ButtonClicks ;)

Skyruner2 16. Jun 2004 22:06

Re: Function/Procedure selbst als Parameter übergeben?
 
hmmm könntest du das bitte genauer erläutern :stupid: ?


:duck:

Chewie 17. Jun 2004 12:45

Re: Function/Procedure selbst als Parameter übergeben?
 
Ein Event (also beispielsweise ein Klick eines Buttons) ist in VCL-Komponenten als Zeiger auf eine Methode deklariert. Um jetzt bei einem Button-Click wirklich Code auszuführen, muss die Instanz der Komponente ja wissen, was sie ausführen muss. Dafür wird eine eigene Methode geschrieben (deine ButtonClick-Methode) und einen Zeiger auf diese Methode als Event gesetzt.
Wäre das nicht möglich, müsstest du für jeden Button, den du benutzt, eine eigene Klasse von TButton ableiten.

maestro 17. Jun 2004 14:28

Re: Function/Procedure selbst als Parameter übergeben?
 
Zitat:

Zitat von Kostas
wie kann ich eine Procedure oder Function als Parameter einer
anderen Procedure oder Function übergeben?

Klar geht das - du übergibst einen Zeiger auf die Funktion bzw. Prozedur. Siehe auch hier: http://www.delphi-source.de/grundlag...ionszeiger.php

Kostas 18. Jun 2004 12:12

Re: Function/Procedure selbst als Parameter übergeben?
 
Volltreffer Leute, genau das habe ich gemeint.
Besten Dank dafür.

Gruß Kostas


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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