2010-08-20 9 views
12

Desidero progettare framework di plug-in Delphi. Ci sono tre opzioni:
1. DLL
2. BPL
3. interfaccia COM

Ogni opzione ha un po 'di svantaggio.Delphi plug-in framework

DLL - Promblem with apllication MDI, i moduli dal plug-in non possono essere incorporati nell'applicazione host exe-mdi.
BPL - Tutti i plug-in * .bpl e * .exe devono essere compilati con la stessa versione di Delphi.
COM - Le interfacce {xxx-xx-xxx-xx} devono essere registrate nel sistema, (regsvr) Quindi il framework dei plugin non può essere portatile!

È tutto vero ciò che ho scritto sopra? In caso contrario, correggimi o ci sono altre possibilità?
grazie

+0

possibile duplicato del [sistema di plugin per applicazioni Delphi -? BPL vs dll] (http://stackoverflow.com/questions/1192734/plugins-system-for-delphi- application-bpl-vs-dll) –

+0

Possibile duplicazione di: [Il modo migliore per aggiungere funzionalità Plugin a un programma Delphi] (http://stackoverflow.com/questions/365968/how-best-to-add-plugin-capability -to-a-delphi-program) – lkessler

+1

Non è il caso che le interfacce COM debbano essere registrate. Se sai dove si trova la DLL di implementazione, puoi caricarla e chiamare direttamente le sue funzioni relative alla COM. Non è necessario che il sistema operativo lo faccia per te.E questo lo rende portatile in * entrambi * il senso della parola: puoi compilare il codice su altri sistemi operativi, e puoi mettere il programma su una chiavetta USB ed eseguirlo ovunque tu vada. –

risposta

8

Sì, ciò che hai scritto è corretto. Tutti questi hanno vantaggi e svantaggi, la domanda è che cosa è importante per te, non hai detto quello che vuoi fare, quindi non possiamo dirti come farlo.

In generale, scegliere BPL per impostazione predefinita, utilizzare DLL se è necessario utilizzarlo da applicazioni non Delphi e selezionare COM solo se necessario.

L'alternativa è quella di non crearne di propri, poiché sono disponibili diversi framework di plug-in Delphi.

Inoltre, questo argomento è stato discusso qui prima, controlla:

1

Un'altra possibilità è avere un'interfaccia di scripting, ad esempio con Python o Pascalscript. Ci sono molti vantaggi in questo approccio, non ultimo il fatto che la fonte del plugin è anche l'eseguibile, rendendo facile il debug e la condivisione.

0

Utilizziamo DLL, anche se si utilizza solo con un'applicazione Delphi. I moduli di dll sono incorporati nel modulo principale e utilizzano schede anziché MDI. Per far funzionare correttamente la DLL usiamo anche un gestore di memoria condivisa e costruito con pacchetti di runtime: vcl, rtl e il nostro pacchetto.

+0

Sì, ci sono alcuni metodi per aggirare l'errore "Impossibile assegnare TFont a TFont" e TFrame da * .dll può essere inserito nell'applicazione host * .exe, ma ci sono altri problemi con ordine di tabulazione con TFrame incorporato, (dopo aver premuto il tasto tab, la messa a fuoco non viene spostata al controllo successivo nel fotogramma ...) O c'è qualche soluzione anche per questo? – Peter

+0

Anche i tasti freccia non vengono intercettati dal modulo, il che significa che i controlli TEdit e TMemo non funzionano correttamente. – rhody

Problemi correlati