|
Sommaire
Page d'accueil du site
Delphi
Mes programmes
Multi-Média Conception
Trucs et astuces
Aide sur HelpWork Shop
Aide sur Delphi X (les bases)
Ma charte de création d'interface
|
|
Bibliothèque
de trucs et d'astuces
Quand on programme
en Delphi (ou avec un autre langage), on trouve sur le moment une
"bonne idée". C'est une idée qui nous rend fier et qui est
l'aboutissement de notre progression... Seulement voila, une fois utilisée
(ou plutôt perdue dans un programme), on ne sait plus comment faire quand
on en a de nouveau besoin. C'est pourquoi, j'ai décidé de faire un fichier
d'aide au format HLP (pour windows) contenant mes fonctions, procédures et
tous mes trucs et astuces dans le but d'avoir une bibliothèque de code
disponible quand j'en ai besoin.
Téléchargez cette aide ici : Bibliothèque
de trucs et d'astuces Delphi, fichier HLP (31
Ko).
Comment
charger une DLL dynamiquement
Dans un premier
temps, une DLL permet de contenir des fonctions et des procédures qui
peuvent être appelées par d'autre programmes. L'exemple suivant va vous
apprendre comment charger une DLL mais de manière dite
"dynamique".
Principe
Il faut affecter un
handle avec le fichier DLL concerné. Le handle point sur la DLL qui pourra
être utilisée par la suite. Ensuite, il faut charger une variable de type procédure
ou fonction avec la procédure (ou fonction) de la DLL. Un foie la DLL
utilisée, il faut impérativement libérer la ressource (la DLL chargée)
sans quoi cela provoques des bugs monumentaux.
Exemple
Commencez par les déclarations :
Créez dans la clause "type"
une variable du type procedure :
TProcedureDLL = procedure
(Nombre : Integer); stdcall ;
Dans la clause "var",
déclarez les variables suivantes :
MaDLL : THandle ;
ProcedureDLL : TProcedureDLL ;
Il faut maintenant charger la DLL comme suivant :
MaDLL := LoadLibrary ('MonFichier.dll')
ProcedureDLL := GetProcAddress (MaDLL, 'Nom de la procédure') ;
C'est tout. Quand vous voulez utiliser la procedure de la DLL appeler la procédure
(ici ProcedureDLL) :
ProcedureDLL (38) ;
N'oubliez surtout pas de libérer la mémoire après utilisation de la facon
suivante :
FreeLibrary (MaDLL)
;
Notes
Supplémentaires
La fonction loadlibrary permet donc de charger une DLL mais surtout à partir
d'une variable (type PChar) et d'un fichier du type DLL mais d'une extension
quelconque.
De plus, si vous passez comme paramètre uniquement le nom de fichier, ce fichier
doit impérativement se trouver dans le même répertoire que l'application
qui l'utilise ou dans les répertoire system ou windows. Sinon, vous devez
définir un chemin complet.
|