Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion oder Proz. übergeben (https://www.delphipraxis.net/50322-funktion-oder-proz-uebergeben.html)

SebE 23. Jul 2005 20:35


Funktion oder Proz. übergeben
 
Guten Abend.

Ich hab gesehen, dass man einer Prozedur/Funktion als Parameter eine Prozedur/Funktion übergeben kann:

Delphi-Quellcode:
type
  TFunc= procedure(Parameter: Char): Byte;

function X(Proc: TFunc): Real;
Aber man muss in der Deklaration von TFunc die Parameter angeben,
geht das auch irgendwie ohne,
so dass ich der Funktion X irgendeine Funtion als Parameter übergebe??
Oder muss die Parameterliste immer schon feststehen?

Hansa 23. Jul 2005 20:45

Re: Funktion oder Proz. übergeben
 
Schon mal überlegt, wozu es private usw. gibt ? Wozu soll der Prozedur-Parameter denn überhaupt gut sein ?

Dax 23. Jul 2005 20:51

Re: Funktion oder Proz. übergeben
 
Nein, das geht nicht. Das ginge gegen die Delphi-Syntax ;)

SebE 23. Jul 2005 20:52

Re: Funktion oder Proz. übergeben
 
Tut mir leid, aber ich verstehe deine Frage nicht so richtig.

Der Code ist doch nur ein Beispiel.

Ich würde nur gern wissen, wie man z.B eine Funktion, deren Parameter unbekannt sind, an eine andere Funktion übergibt.

oh, merke grad, dass ich mich verschrieben habe:

Delphi-Quellcode:
type
  TFunc= function(Parameter: Char): Byte;
Delphi-Quellcode:
function X(Proc: TFunc): Real;

SebE 23. Jul 2005 20:52

Re: Funktion oder Proz. übergeben
 
Gibt es da auch keinen Umweg?

Vielleicht mit Pointern, dass ich die Adresse der Funktion übergebe?
Würde das gehen?

jfheins 23. Jul 2005 21:00

Re: Funktion oder Proz. übergeben
 
Nur so: Wie willst du diese Funktion dann aufrufen, dass die Funktion auch alle Parameter übergeben bekommt, wenn du diese nicht weist ?

(Vielleicht ginge es mit ASM und einem CALL ...)

DGL-luke 23. Jul 2005 21:01

Re: Funktion oder Proz. übergeben
 
du kannst ganz einfach die funktion selbst mit pointern bauen.

Delphi-Quellcode:
type
  TFunc= function(Parameter: Pointer): Byte;

Dax 23. Jul 2005 21:02

Re: Funktion oder Proz. übergeben
 
Kurz? Nein.

Lang: Wenn du eine Funktion verwendest, musst du zur Kompilierzeit wissen, welche Parameter du wie übergeben musst. Das geht aber nur, wenn die Signatur der Funktion/Prozedur festgelegt ist. Es geht nicht anders ;) Mit .net ginge es eventuell, aber unter Win32 kommst du bei so einem Vorhaben um TypeInfo und selbstmodifizierenden Code nicht herum.

SebE 23. Jul 2005 21:06

Re: Funktion oder Proz. übergeben
 
Na gut :cry: ,

Aber Danke für die Antworten, man lernt doch jeden Tag was Neues :thumb:

Kroko1999 24. Jul 2005 06:15

Re: Funktion oder Proz. übergeben
 
Delphi-Quellcode:
type
  TFunc= function (Params: array of const): Byte;
nur hast du dann die Schwierigkeit den Typ alle Parameter in der Funktion auszuwerten


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