AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Flexibles Pluginsystem: Diskussion

Ein Thema von cruiser · begonnen am 20. Jul 2006 · letzter Beitrag vom 3. Mai 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#1

Flexibles Pluginsystem: Diskussion

  Alt 20. Jul 2006, 06:42
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


Dieses Thema bezieht sich auf diesen Codelib-Beitrag.
[edit=Phoenix]Codelib-Bezug eingefügt. Mfg, Phoenix[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#2

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 13:58
naja die daten sind immer die gleichen

Bsp von Trillian Load Befehl:
Zitat:
unsigned int struct_size; //<-- den braucht man nicht wirklich

/* Information given to the plugin
*/

char *config_directory;
char *skin_directory;
char *temp_directory;

plugin_function_send plugin_send; //Da wird die Callback übergeben

/* Plugin Fills out this information //de sachen kann das Plugin ausfüllen
*/

char guid[128];

char name[256];
char company[256];
char version[64];
char description[1024];

/* 2.0 information: given to the plugin //ab version 2 sind jetzt auch noch diese Werte enthalten
*/
char *global_config_directory;
char *trillian_directory;
char *language_directory;
Was dem Plugin übergeben wird ist fix im Programm drinnen. Aber wenn man jetzt ne Funktionen reinhat und ne Parameter dazu dann muss man die neuen Parameter einfach beim Record unten hinzufügen. Dann funktionieren die alten Plugins noch nur sie können nicht alles ausschöpfen. Aber wenn jemand ein Plugin programmieren möchte dann holt er sich die neue Plugin Unit und dann kann er die neuen werte auch nutzen ... des wegen flexibel

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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#3

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 14:29
Hallo Alex,

Deine Idee ist nicht schlecht, hat aber einen gaaanz kleinen Haken:PluginSend('Befehl an die Anwendung', nil); 'Befehl an die Anwendung' muss in der PlugIn-dll geparse't werden, was etwas Zeit kostet.

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.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 14:57
Zitat von kalmi01:
Deine Idee ist nicht schlecht, hat aber einen gaaanz kleinen Haken:PluginSend('Befehl an die Anwendung', nil); 'Befehl an die Anwendung' muss in der PlugIn-dll geparse't werden, was etwas Zeit kostet.
was meinst du? was kostet da zeit?
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 von kalmi01:
Ich hatte soetwas ähnliches in meinem Editor auch gemacht, je komplexer das System wurde, umso langsamer wurde es aber.
hmm des es etwas langsamer wird ist klar aber des aus einen anderen grund

Zitat von kalmi01:
Allerdings ist Deine Methode unschlagbar flexibel.
So war es auch gedacht
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#5

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 15:28
Zitat:
was meinst du? was kostet da zeit?
wenn Dein ProgPluginMain(Befehl, Parameter); aufruft, dann muss in "PluginMain" ja "Befehl" geparse't werden
Delphi-Quellcode:
if (Befehle = 'BringToFront') then machwas;
if (Befehle = 'GotoXY') then machwasanderes;
usw.
was nicht sooo performant ist, als wenn "machwas" oder "machwasanderes" direkt aufgerufen werden.
Selbst wenn man mit "Goto" aus der Schleife rausspringt.

Insbesondere wenn man
Zitat:
Dann müsst ihr nur noch eure Anwendung mit PluginBefehlen zupflastern.
z.b. wenn irgendein Menu geöffnet wird
das macht.
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#6

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 15:39
Zitat von gsh:
hmm des es etwas langsamer wird ist klar aber des aus einen anderen grund
Erzähl mal
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 16:41
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

noch ein Tipp:
Delphi-Quellcode:
if Befehl = '1then
begin
  Bla;
  exit;
end;
if Befehl = '2then
begin
  BlaBla;
  exit;
end;
if Befehl = '3then
begin
  BlaBlaBla;
  exit;
end;
Dann wird sofort nachdem er den Befehl hat rausgesprungen (sowas wie goto)
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 16:49
dat würd ich anders machen ^^

Delphi-Quellcode:
case AnsiIndexStrings(Befehl,['1','2','3']) of
  0: Do_One;
  1: Do_Two;
  2: Do_Three;
end;
mMn sehr viel eleganter...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#9

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 16:51
Zitat:
Delphi-Quellcode:
if Befehl = '1then
begin
  Bla;
  exit;
end;
Naja, dann könnte man aber auch gleich mit nem "case of" arbeiten.
"FindComponent" ist da wohl doch etwas performanter.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#10

Re: Flexibles Pluginsystem

  Alt 20. Jul 2006, 16:58
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?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
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