Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.delphi.misc > #19251

Re: Free Pascal / Zeiger auf Funktion?

From Sieghard Schicktanz <Sieghard.Schicktanz@SchS.de>
Newsgroups de.comp.lang.delphi.misc
Subject Re: Free Pascal / Zeiger auf Funktion?
Date 2024-05-14 19:49 +0200
Organization Dr. Sieghard Schicktanz
Message-ID <20240514194935.2d2bf8b4@Achmuehle.WOR> (permalink)
References <v201rk$8l3k$1@dont-email.me>

Show all headers | View raw


Hallo Frank,

Du schriebst am Tue, 14 May 2024 18:00:50 +0200:

> Hallo,
> 
> ich habe von dieser Seite:
...
> folgenden Quelltext kopiert und versucht zu compilieren:
> 
> { Start }
> 
> Type  
>   FuncType = Function: Integer;  
...
> Var F : FuncType;  
...
>   F := AddOne; { Assign AddOne to F, Don't call AddOne}  
...
> Das funktioniert nur wenn ich "fpc -Mdelphi <source.pas>" aufrufe.
> Im fpc Modues erhalte ich folgenden Fehler:
...

Ja. Gemäß Dokumentation möchte der "fpc"-Modus vom Programmierer angegeben
wissen, ob eine Funktionsangabe (die ja z.B. auch eine Prozedur-Referenz
zurpckgeben könnte) als _Aufruf_ oder als _Referenz_ abzusehen wäre. In
Deinem Fall willst Du eine _Referenz_ zuweisen, und das ist im fpc-Modus
mit einem vorangestellten "@" anzuzeigen.

> Ich experimentiere bloß rum. ...

Dokumentation anschauen und nach Erklärungen suchen wäre nützlich(er).

> Ich experimentiere bloß rum. Ich möchte einer Funktion eine andere
> Funktion als Parameter übergeben damit sie dort aufgerufen wird. Ich

Ja, dafür funktioniert das genauso.

> dachte vielleicht kann ich einen Zeiger oder eine Referenz auf eine
> Funktion erstellen und diese dann übergeben. Im Delphi Modus funktioniert
> das obige Beispiel.

Sicher, das geht auch und kann in manchen Fällen sogar nützlich oder nötig
sein. Es kommt halt darauf an, wofür so ein Konstrukt dienen soll.

> Wie kann ich das im fpc Modus erreichen?

S.o.

> Gibt es eine Möglichkeit mit der Funktion Addr()?

Ja, das sollte genaiso gehen, ist aber (inzwischen?) eher unüblich, der
"@"-Operatir macht dasselbe.
> 
> pointer := Addr(<Funktionsname>);
> 
> Dann habe ich aber nur einen "generischen" Pointer auf die Funktion.

Dann ja, wenn die Zuweisung auf eine generische Pointer-Variable erfolgt.
Aber auch Pointer können in Pascal einen Typ haben.

-- 
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------

Back to de.comp.lang.delphi.misc | Previous | NextPrevious in thread | Find similar


Thread

Free Pascal / Zeiger auf Funktion? Frank Graf <fgraf@duck.com> - 2024-05-14 18:00 +0200
  Re: Free Pascal / Zeiger auf Funktion? Sieghard Schicktanz <Sieghard.Schicktanz@SchS.de> - 2024-05-14 19:49 +0200

csiph-web