![]() |
Re: Prozedurale Typen zur Laufzeit erstellen?
Ich weiss nicht viel über Plugins, ich weiss aber immerhin, daß sie feste, eng umrissene Schnittstellen definieren mit denen Plugins auskommen müssen. Ist auch logisch, nicht nur wegen Sicherheitsbedenken.
Stell Dir vor es gäbe die Möglichkeit dynamisch zu ermitteln, das es eine bisher unbekannt Methode in einem Plugin gibt. Vielleicht könnte man noch herausfinden welche Parametertypen diese Methode benötigt. aber kein Programm der Welt könnte erraten wozu die Parameter eigentlich gut sein sollen.;) Sherlock |
Re: Prozedurale Typen zur Laufzeit erstellen?
Ja, das geht irgendwie
Eventuell reicht dir ein gekonnt umgesetztes (und mißbrauchtes) IDispatch-Interface. Ansonsten würde ich mich an der Umsetzung bspw. der Aufrufe von Stored Procedures der Datenbankkomponenten orientieren. Edit: Aber wie Sherlock sagt: Wer soll dass aufrufen? |
Re: Prozedurale Typen zur Laufzeit erstellen?
Nehm Php / Ruby / Python etc... da geht sowas ;-)
Delphi ist keine dynamische Sprache. -> Da geht das nicht. Ich würde aber sagen, Du hast in Deinem Fall ein konzeptionelles Problem. Du musst die Schnittstellen Deiner Anwendung (des Hosts) so definieren, dass die Plugins alles was sie machen dürfen auch irgendwie können. Die Idee wäre, dieses in dem Plugin zu definieren und eine schnittstelle anzubieten, mit der die Dll in den Host zurückrufen und jeden einzelnen Parameter abfragen könnte. So als Beispiel. |
Re: Prozedurale Typen zur Laufzeit erstellen?
du könntest das ganze indirekt erreichen. Übertrage zum Beispiel einfach ein XML wo mehrere Parameter drin stehen.
Du kannst so zu Beispiel folgendes realisieren: - DLL bietet eine fest definierte Funktion welche ein XML zurück gibt in dem die angebotenen Funktionen stehen mit den möglichen Parametern - Die Anwendung wertet das XML aus und kennt somit die Methoden welche durch die XML angeboten wurden - Die Anwendung ruft dann eine weitere fest definierte Funktion der DLL auf und übergibt ein XML wo der aufzurufende Methodennamen drin steht und die dazugehörigen Parameter. Du kannst dir ja mal XMLRPC anschauen. Ein Funktionsaufruf sieht da zum Beispiel so aus: man schickt folgende XML-Datei hinn (an eine festdefinierte Funktion/Datei)
XML-Code:
und als Antwort kommt dann zum Beispiel zurück:
<?xml version="1.0" encoding="utf-8"?>
<methodCall> <methodName>system.login</methodName> <params> <param> <value> <struct> <member> <name>username</name> <value> <string>SirThornberry</string> </value> </member> <member> <name>password</name> <value> <string>geheim</string> </value> </member> <member> <name>domain</name> <value> <string /> </value> </member> </struct> </value> </param> </params> </methodCall>
XML-Code:
<?xml version="1.0"?>
<methodResponse> <params> <param> <value> <struct> <member> <name>domain</name> <value> <string>default</string> </value> </member> <member> <name>sessionid</name> <value> <string>5e6ce25395545c7cf337714c7f3ddcaa</string> </value> </member> <member> <name>kp3</name> <value> <string>756dfb8d7ff9d4342680469a3169a1fa</string> </value> </member> </struct> </value> </param> </params> </methodResponse> |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 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