Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionsnamen aus Variablen? (https://www.delphipraxis.net/51162-funktionsnamen-aus-variablen.html)

new32 7. Aug 2005 13:52


Funktionsnamen aus Variablen?
 
Gibt es eine möglichkeit eine Funktion auszuführen, deren Name in einer Variable steht?

z.B.:

Delphi-Quellcode:
var s:string;

procedure h;
begin
 //???
end;

s:=h;
so und nu möchte ich dieses hier anders machen:

Delphi-Quellcode:
if s=h then h;

Dax 7. Aug 2005 13:55

Re: Funktionsnamen aus Variablen?
 
Ja, die Möglichkeit gibt es. Aber sie wird von Delphi nicht angeboten. Das ganze Ding, das du brauchst, nennt sich Parser, damit könnte es gehen ;)

Falls du das wirklich über Strings machen willst, schlage ich vor, deine Prozeduren als class procedures in eine Klasse zu legen (unter published) und per RTTI anzusprechen.

Oxmyx 7. Aug 2005 14:00

Re: Funktionsnamen aus Variablen?
 
Nein, es gibt keine triviale Möglichkeit, das zu tun was du erreichen willst. Ich weiß allerdings nicht, was an einer if-Abfrage schlecht sein soll.

new32 7. Aug 2005 14:22

Re: Funktionsnamen aus Variablen?
 
Zitat:

Zitat von Oxmyx
Ich weiß allerdings nicht, was an einer if-Abfrage schlecht sein soll.

Ich baue nen Interpreter; wenn ich nu für jeden Befehl ne if-Abfrage(oder case...) mache, bin ich 1. ewig damit bescheftigt und 2. wird das ding immer langsamer!


verstehst du mein Problen?

MfG NEW32!

Speedmaster 7. Aug 2005 14:32

Re: Funktionsnamen aus Variablen?
 
Stichwort: Funktions und Methodenzeiger!

Pseudemys Nelsoni 7. Aug 2005 14:46

Re: Funktionsnamen aus Variablen?
 
Und wie sollen ihm Methodenzeiger dort helfen? Per string kann er sie damit trotzdem nicht ansprechen bzw aufrufen.

new32 7. Aug 2005 14:50

Re: Funktionsnamen aus Variablen?
 
versteh ich auch nich.

ich stell mir das so vor(vereinfacht):

Delphi-Quellcode:
runProc('h');

MrKnogge 7. Aug 2005 14:56

Re: Funktionsnamen aus Variablen?
 
Die procedure-Namen die du in Delphi gibst, gibt es aber später im programm nicht mehr, sie dienen lediglich zum programmieren, folglich wirst du um if / case nicht drumrum kommen.

negaH 7. Aug 2005 15:13

Re: Funktionsnamen aus Variablen?
 
Es gibt tatsächlich zwei Möglichkeiten die in Delphi integriert sind um das zu erreichen:

1.) über Klassen deren Methoden published wurden. Über Class.FindMethod() kann man solche published Methoden finden und aufrufen. Deren Parameter müssen aber denoch zur Compilertime bekannt und fixiert sein.

2.) über Interfaces, genauer gesagt über IDispatch. Benutzt man solche Interfaces dann gibt es bekanntlich zwei Arten der Bindung solcher Interfaces -> die frühe Bindung ist hardcoded durch den Compiler aber die späte Bindung basiert auf Namen. Vorteil dieser Variante ist es das die Parameter selber ebenfalls dynamisch zu Laufzeit übergeben werden können und denoch Typsicher sind.

In jedem Falle müssten deine Proceduren/Funktionen in Klassen oder Interfaces gekapselt werden, was ich sogar als Vorteil empfinde. Die letztere Art kann zb. auch mit dem MS-Scripting benutzt werden. D.h. man kann zb. in VBA Basci seine Scripte schreiben, in Delphi seine eigenen IDispatch Schnittstellen implementieren und diese dann innerhalb der Scripting Engine aufrufen.

Gruß Hagen

new32 7. Aug 2005 15:16

Re: Funktionsnamen aus Variablen?
 
Zitat:

Zitat von MrKnogge
Die procedure-Namen die du in Delphi gibst, gibt es aber später im programm nicht mehr, sie dienen lediglich zum programmieren, folglich wirst du um if / case nicht drumrum kommen.

Da is was dran... hätt ich eigentlich selbst drauf kommen können.

@all: TNX!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Seite 1 von 3  1 23      

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