![]() |
Flexibles Pluginsystem: Diskussion
Flexibel heisst aus meiner Sicht aber auch, dass der Entwickler der Anwendung nicht wissen muss, was der Entwickler des Plugins mit dem Plugin in/an/mit/durch die/der Anwendung machen will. Soll heissen, woher weiss die Anwendung, welche Daten sie wann dem Plugin liefern muss?
Vielleicht löst du das erst mal noch :wink: Dieses Thema bezieht sich auf diesen ![]() [edit=Phoenix]Codelib-Bezug eingefügt. Mfg, Phoenix[/edit] |
Re: Flexibles Pluginsystem
naja die daten sind immer die gleichen
Bsp von Trillian Load Befehl: Zitat:
Des hab ich sogar vergessen zu sagen: Da dem Plugin ein Pointer von der Variable des Records übergeben wird. Somit kann das Plugin die Daten verändern und die Anwendung kann das dann ohne Probleme auslesen. z.b. Versions nummer des Plugins |
Re: Flexibles Pluginsystem
Hallo Alex,
Deine Idee ist nicht schlecht, hat aber einen gaaanz kleinen Haken:
Delphi-Quellcode:
'Befehl an die Anwendung' muss in der PlugIn-dll geparse't werden, was etwas Zeit kostet.
PluginSend('Befehl an die Anwendung', nil);
Ich hatte soetwas ähnliches in meinem Editor auch gemacht, je komplexer das System wurde, umso langsamer wurde es aber. Allerdings ist Deine Methode unschlagbar flexibel. |
Re: Flexibles Pluginsystem
Zitat:
Des war nur ein Beispiel das das Plugin JEDERZEIT einen Befehl an die Anwendung senden kann damit die anwendung irgendwas macht. Das kann man machen muss man aber nicht. Zitat:
Zitat:
|
Re: Flexibles Pluginsystem
Zitat:
Delphi-Quellcode:
aufruft, dann muss in "PluginMain" ja "Befehl" geparse't werden
PluginMain(Befehl, Parameter);
Delphi-Quellcode:
was nicht sooo performant ist, als wenn "machwas" oder "machwasanderes" direkt aufgerufen werden.
if (Befehle = 'BringToFront') then machwas;
if (Befehle = 'GotoXY') then machwasanderes; usw. Selbst wenn man mit "Goto" aus der Schleife rausspringt. Insbesondere wenn man Zitat:
|
Re: Flexibles Pluginsystem
Zitat:
|
Re: Flexibles Pluginsystem
aso jetzt versteh ich des wie du des meinst ... ja das war auch meine Überlegung das alles etwas langsamer wird
naja flexiblität hat seinen Preis :mrgreen: noch ein Tipp:
Delphi-Quellcode:
Dann wird sofort nachdem er den Befehl hat rausgesprungen (sowas wie goto)
if Befehl = '1' then
begin Bla; exit; end; if Befehl = '2' then begin BlaBla; exit; end; if Befehl = '3' then begin BlaBlaBla; exit; end; |
Re: Flexibles Pluginsystem
dat würd ich anders machen ^^
Delphi-Quellcode:
mMn sehr viel eleganter...
case AnsiIndexStrings(Befehl,['1','2','3']) of
0: Do_One; 1: Do_Two; 2: Do_Three; end; |
Re: Flexibles Pluginsystem
Zitat:
"FindComponent" ist da wohl doch etwas performanter. |
Re: Flexibles Pluginsystem
ah des ist ja genial
ich hätte schon case genommen ... mein problem war einfach nur des case nur mit integer geht und die Funktion AnsiIndexStrings kannte ich nicht @kalmi01: FindComponent? Wie soll des gehen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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