IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[Aide] Appel dynamique d'une DLL ?


Sujet :

Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Points : 225
    Points
    225
    Par défaut [Aide] Appel dynamique d'une DLL ?
    Bonjour,

    j'ai créé des Dll et je souhaiterais faire appel à certaines d'entre-elles de façon dynamique, en statique je n'ai pas de problème.

    Je viens d'avoir un doute sur la gestion dynamique (pas encore fait le test)

    Ji j'appel en dynamique cf code ci-dessous, est-ce que je peux libérer la dll par "DECHARGER_DYNAMIQUE_DLL(HandleDLL[Num_Handle])" juste après avoir fait appel à la DLL, sachant que dans cette dll je gère des forms qui sont en cours d'utilisation, à mon sens non, mais vous qu'en pensez-vous ?

    Autre question : Est ce que je ne risque pas de trop charger le PC si je charge plusieurs fois la même DLL ou d'autre d'ailleurs

    en espèerant que ma question soit claire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    	Try
    		if FileExists(DLL_NAME) then
    		begin
    			DYNAMIQUE_LANCEUR_DLL := nil;
    			Num_Handle := My_RECHERCHE_HandleDLL;
     
    			HandleDLL[Num_Handle].My_Handle := LoadLibrary(pAnsiChar(DLL_NAME));
    			HandleDLL[Num_Handle].NAME_DLL := DLL_NAME;
    			If HandleDLL[Num_Handle].My_Handle = 0 then Exit
    			else
    			begin
    				DYNAMIQUE_LANCEUR_DLL := GetProcAddress(HandleDLL[Num_Handle].My_Handle, pAnsiChar(PROC_DLL_NAME));
    				If Assigned(DYNAMIQUE_LANCEUR_DLL) then  DYNAMIQUE_LANCEUR_DLL(ParentApplication,ParentDATABASE)
    				:koi: DECHARGER_DYNAMIQUE_DLL(HandleDLL[Num_Handle]);
    			end;
    		end
    		else Showmessage('Impossible de continuer, la DLL : '+DLL_NAME+' est introuvable');
    	Except
    		Showmessage('Problème lors du chargement de la DLL : '+DLL_NAME);	end;
    Cordialement
    Qays

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    la dll ne doit etre charge qu'une fois en memmoire
    l'acces au element de la dll ne peuvent se faire que si et seulement si celle ci est chargé en memmoire

    sinon tu peut charge et decharger la dll autant de fois que tu le veut

    @+ Phil

Discussions similaires

  1. Problème appel JNI d'une dll via COM
    Par mfabien dans le forum C
    Réponses: 3
    Dernier message: 13/04/2007, 14h38
  2. appel méthode d'une dll
    Par spilmann dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/02/2007, 11h47
  3. appeler et utiliser une dll
    Par WELCOMSMAIL dans le forum C++Builder
    Réponses: 10
    Dernier message: 15/11/2006, 22h15
  4. Réponses: 16
    Dernier message: 06/08/2006, 23h45
  5. [D7] - Allocation dynamique dans une DLL
    Par david_chardonnet dans le forum Delphi
    Réponses: 6
    Dernier message: 05/07/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo