Utilisation de fonction contenue dans une dll

Soyez le premier à donner votre avis sur cette source.

Vue 6 553 fois - Téléchargée 720 fois

Description

Objet permettant de charger une DLL est d'utiliser les fonctions la composant.

Source / Exemple :


Dans le ZIP

Conclusion :


Utilisation :
- il suffit de dériver la classe TLoadDll comme ci-dessous :

// Objet permettant d'accéder à Exemple.DLL
TLoadDLLExemple = class(TLoadDll)
protected
procedure FreeLibrary; override;
procedure LoadLibrary; override;
Public
GetFunction1: Function: boolean; stdcall ;
GetFunction2: Function: boolean; stdcall ;
constructor Create(AOwner: TComponent); override;
end;

implementation

{ TLoadDLLExemple }

constructor TLoadDLLExemple.Create(AOwner: TComponent);
begin
inherited;
if not (csDesigning in ComponentState) then
// chargement de la DLL
Dll:= 'EXEMPLE.DLL';
end;

procedure TLoadDLLExemple.FreeLibrary;
begin
@GetFunction1:= nil;
@GetFunction1:= nil;
inherited;
end;

procedure TLoadDLLExemple.LoadLibrary;
begin
inherited;
// fonction1 et fonction2 sont les noms dans la DLL
@GetFunction1:= GetFunction('fonction1');
@GetFunction1:= GetFunction('fonction2');
end;

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
18
Date d'inscription
mercredi 11 décembre 2002
Statut
Membre
Dernière intervention
3 octobre 2007

salut,
Je suis en train de développer un outil en delphi dans le monde télécom,je dois aller chercher un paramétre d'une méthode de l'objet com écrit en vb pour l'encapsuler dans mon code delphi.Comment dois-je m'y prendre?Avec plus détails svp!
Bien à vous.
MKB.
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Pratique si on perd la mémoire... car les appels dynamiques sont des choses à connaître. C'est excellent pour gérer des plugins.

Personnellement, je déclare toujours des fonctions du genre:
type TDLLEvent = procedure(LesParamètres) of object;
Et après je fais des appels. FARPROC fait un peu C++, et je n'utilise jamais ce mot explicitement. Pour l'utilisation que je fais de LoadLibrary, GetProcAdress et FreeLibrary, c'est suffisant. En écrivant ça, on sait pertinemment ce qu'on appelle.

Si on a "var Proced : TDLLEvent;" on aura pour pointer la procédure le code "@Proced:=GetProcAdress(...);"

La classe de MHI cache l'essentiel, et est a priori fonctionnelle. On pourra toujours consulter le code source d'Ancestrologie.com, car c'est là que j'ai appris comment tout cela fonctionne, et je l'en remercie.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.