Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.delphi.misc > #19251
| 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> |
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 | Next — Previous in thread | Find similar
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