![]() |
Funktion über ihren Namen als String aufrufen
Hallo,
in manchem VBA kann man mit einem Funktionsnamen der als String vorliegt, diese Funktion aufrufen: CALL("MeineFunktion"). Weiß gerade nicht wie/ob man dabei auch Parameter übergeben kann, ist aber auch egal, da ich das nur ohne Parameter brauche. Die Frage ist natürlich, ob das auch in Delphi irgendwie geht. P.S.: Ich hab zwar wie ich gerade sehe überall Funktion geschrieben, meinte allerdings Prozedur.:oops: |
AW: Funktion über ihren Namen als String aufrufen
|
AW: Funktion über ihren Namen als String aufrufen
Mit Deinem Delphi 6 wird das so wohl nicht gehen. Bei neueren Versionen (ich glaub ab 2010) gibt es die RTTI.
|
AW: Funktion über ihren Namen als String aufrufen
Zitat:
|
AW: Funktion über ihren Namen als String aufrufen
OK. Wäre denn folgender Workarround denkbar / sinnvoll:
Es gibt eine Funktion oder eine Klasse mit u.a. einer Funktion. Dieser wird der Name einer anderen Funktion als String übergeben und diese startet dann über ein "If...then...else usw."-Konstrukt die gewünschte Funktion. Die Funktion muss natürlich alle diese Funktionen kennen und es wäre ggf. auch möglich Parameter zu übergeben (ist aber z.Zt. nicht wichtig). Also so etwas wie eine Factory für Funktionen? Zum Hintergrund: Bestimmte Funktionen sollen hintereinander ablaufen, die Ablaufreihenfolge soll aber veränderbar sein (über eine Tabelle gesteuert). |
AW: Funktion über ihren Namen als String aufrufen
Ja, warum denn nicht ...
Delphi-Quellcode:
procedure CallFunction( const AName : string; AParams : array of const; AResult : Variant );
var LName : string; begin AResult := Null; LName := LowerCase( AName ); if LName = 'tollefunktion' then tollefunktion else if LName = 'nochtollerefunktion' then nochtollerefunktion else raise Exception.CreateFmt( 'Funktion "%s" nicht gefunden!', [AName] ); end; |
AW: Funktion über ihren Namen als String aufrufen
Prima, danke für die Bestätigung.
|
AW: Funktion über ihren Namen als String aufrufen
Ich habe zwar das
![]() ![]() |
AW: Funktion über ihren Namen als String aufrufen
wenn Du den Link schon angibst:
Zitat:
|
AW: Funktion über ihren Namen als String aufrufen
Zitat:
Delphi-Quellcode:
type
TMyClass = class strict private _Value : string; private FValue : string; function GetValue : string; public function GetSomething( const AValue : string ) : string; property Value : string read GetValue; end; function TMyClass.GetValue : string; begin Result := '_' + FValue + '_'; end; function TMyClass.GetSomething( const AValue : string ) : string; var LValue : string; begin LValue := 'Something'; Result := LValue + // local variable AValue + // attribute _Value + // strict private class field FValue + // private class field Value; // property end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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 by Thomas Breitkreuz