![]() |
Funktionsnamen aus Variablen?
Gibt es eine möglichkeit eine Funktion auszuführen, deren Name in einer Variable steht?
z.B.:
Delphi-Quellcode:
so und nu möchte ich dieses hier anders machen:
var s:string;
procedure h; begin //??? end; s:=h;
Delphi-Quellcode:
if s=h then h;
|
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. |
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.
|
Re: Funktionsnamen aus Variablen?
Zitat:
verstehst du mein Problen? MfG NEW32! |
Re: Funktionsnamen aus Variablen?
Stichwort:
![]() |
Re: Funktionsnamen aus Variablen?
Und wie sollen ihm Methodenzeiger dort helfen? Per string kann er sie damit trotzdem nicht ansprechen bzw aufrufen.
|
Re: Funktionsnamen aus Variablen?
versteh ich auch nich.
ich stell mir das so vor(vereinfacht):
Delphi-Quellcode:
runProc('h');
|
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.
|
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 |
Re: Funktionsnamen aus Variablen?
Zitat:
@all: TNX! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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