Il modo più semplice per utilizzare le funzioni di un pacchetto è "utilizzare" l'unità che contiene la funzione, chiamarla come al solito e inserire il pacchetto nell'elenco dei pacchetti di runtime del progetto. Perché ciò funzioni, ci sono alcuni requisiti:
- Il progetto deve utilizzare la stessa versione Delphi utilizzata per compilare il pacchetto.
- È necessario avere accesso al file DCU per l'unità o almeno al file DCP per il pacchetto.
- Il pacchetto deve esistere nel percorso di ricerca del sistema operativo all'avvio del programma.
Se non è possibile soddisfare il terzo requisito o se non si desidera che il pacchetto venga caricato sempre, è possibile chiamare invece lo LoadPackage
. Il modo per farlo funzionare è quello di avere un altro pacchetto che sia caricato tutto il tempo. Sarà usato sia dal tuo progetto che dal pacchetto che desideri caricare. Il pacchetto intermedio esporrà un'interfaccia (come alcune funzioni di registrazione, una variabile o una classe) che il pacchetto principale può utilizzare per dire all'applicazione quali sono le sue funzioni. Non sarai in grado di "utilizzare" l'unità del pacchetto principale direttamente nella tua applicazione.
Se non riesci a soddisfare i primi due requisiti, c'è il modo più difficile, che è anche quello che dovresti fare se la tua applicazione non è scritta in Delphi o C++ Builder. Tratta il pacchetto come una normale DLL. Caricalo con LoadLibrary
. Utilizzare GetProcAddress
per caricare la sua funzione Initialize
e quindi chiamarla. (Ricordare che la convenzione di chiamata è register
, non stdcall
.) Quindi caricare l'indirizzo della funzione che si desidera chiamare, tenendo presente che il nome della funzione è stato manomesso per includere alcune informazioni di unità e tipo. Chiamare la funzione Finalize
prima di chiamare FreeLibrary
. Controllare la fonte per LoadPackage
e UnloadPackage
; se è necessario chiamare CheckForDuplicateUnits
probabilmente dipende dal fatto che sia possibile soddisfare il requisito numero 1.
fonte
2009-09-08 15:39:40
In qualsiasi modo puoi indicarmi una risorsa per farlo? In realtà non sono un programmatore Delphi, quindi sono a corto di alcune cose. – Dan
Non sono a conoscenza di alcuna risorsa che descrive come caricare "manualmente" i pacchetti come descritto nel paragrafo finale. Il modo normale di usare i pacchetti, come descritto nel penultimo paragrafo, è qualcosa che mi aspetto di apparire nell'aiuto di Delphi, anche se non posso verificarlo da quando non ho installato Delphi da nessuna parte. –