Pointer auf Funktionen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Pointer auf Funktionen

Beitrag von alexander »

Hi,

also ich habe den Funktionen-Typ:

Code: Alles auswählen

TMyFunc= function(r:real):real   of object ;
Nun habe ich eine Funktion, die mir einen Pointer auf eine Spezielle Funktion des oben genannten Typs gibt:

Code: Alles auswählen

function TLightCalculation.X: TMyFunc;
begin
    Result:=@FX  // alles natürlich nur vereinfachter Beispiel Code...
//FX ist eine Funktion vom Typ TMyFunc
end;
So nun WILL ich folgendes machen:

Code: Alles auswählen

//LC ist eine Instanz von TLightCalculation
neueZahl:=LC.X(5);
Das klappt nicht, da folgende (logische) Fehlermeldung kommt:

Code: Alles auswählen

Error: Wrong number of parameters specified for call to "X"
und dann kommt natürlich noch eine, dass die Typen real und TMyFunc nicht übereinstimmen


Klar. Was ich machen kann ist:

Code: Alles auswählen

var myx:TMyFunc

Code: Alles auswählen

myx:=LC.X;
neuezahl:=myx(5);
Doch dieses Speichern in eine Variable möchte ich umgehen. kann ich es noch so irgendwie ohne zusätzliche Variable machen?

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Re: Pointer auf Funktionen

Beitrag von alexander »

Ok Problem gelöst ;-)

Code: Alles auswählen

neueZahl:=TMyFunc(LC.X)(5);
Trotzdem Danke ;-)
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Antworten