Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionen mit bestimmten Typ verwenden (tmyfunction) (https://www.delphipraxis.net/62246-funktionen-mit-bestimmten-typ-verwenden-tmyfunction.html)

ichbins 1. Feb 2006 18:45


Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
Hi,
ich will Funktionen eines bestimmten Typs verwenden, also etwa so:

Delphi-Quellcode:
type
  tgraphfunction = function(x:real):real;

[...]

function f1:tgraphfunction;
begin
  result:=x;
end;
nur meckert der Compiler beim Zugriffsversuch auf x. result funktioniert.

an was liegt das? :gruebel:

jfheins 1. Feb 2006 18:47

Re: Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
Du hast deine Funktion so eratellt, dass sie eine Vriable des Typs tgraphfunction zurückgibt ;)

Ich weis nicht, ob mn überhaupt eine funktin anhand eines typs deklarieren kann ... imho musst du die argumente ausschreiben ;)

Dax 1. Feb 2006 18:48

Re: Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
Öhm.. ich fürchte du hast das falsch verstanden.. x ist Parameter von Result(). Deine Funktion gibt eine TMyFunction zurück, also eigentlich eine function(x: Real): Real; ;)

Woher soll der Compiler das x denn auch nehmen?^^ In den Parametern von f1 steht ja nix.

ichbins 1. Feb 2006 18:51

Re: Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
:oops:

mit '=' gehts auch nicht

aber bei DLLs gibts sowas doch irgendwo?



wie kann ich dann ein Array of function erstellen?


//edit
jetzt hab ichs mal so gelöst:
Delphi-Quellcode:
function graphfunc(x:real;mode:integer):real;
begin
  case mode of
    1: result:=1*power(x,3);
    2: result:=0.5*power(x,3);
  end;
end;

Oxmyx 1. Feb 2006 19:36

Re: Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
Nochmal: Die Variable "x" wird nirgends in deiner Funktion "f1" deklariert, du kannst also unmöglich darauf zugreifen. Es ist natürlich möglich, dass deine Funktion einen Funktionszeiger zurückliefert, aber das hat dann nichts mit den Argumenten deiner Funktion f1 zu tun.

Zitat:

wie kann ich dann ein Array of function erstellen?
Delphi-Quellcode:
procedure P1;
begin
  ...
end;

procedure P2;
begin
  ...
end;

procedure P3;
begin
  ...
end;



type
  TProc = procedure;
var
  procedures: array[0..2] of TProc;
begin
  procedures[0] := @P1;
  procedures[1] := @P2;
  procedures[2] := @P3;
end;

ichbins 1. Feb 2006 19:43

Re: Funktionen mit bestimmten Typ verwenden (tmyfunction)
 
danke :thumb:


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