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 :

[D7] - Allocation dynamique dans une DLL


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Points : 97
    Points
    97
    Par défaut [D7] - Allocation dynamique dans une DLL
    Bonjour,

    Je programme une DLL dans laquelle je voudrais m'assurer qu'au chargement de celle-ci les objets soient alloués, et qu'au déchargement ils soient désalloués.

    Il me semble qu'il existe des fonction initinstance et exitinstance par défaut, auxquelles je voudrais rajouter mon code, mais je ne sais pas comment faire.

    Avez-vous une idée?

    Merci d'avance

  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

    Tu Cherche un truc dans ce gout la ?
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     library DllEntry;
     
    const
      DLL_PROCESS_ATTACH = 1; // Executable attaches to DLL
      DLL_THREAD_ATTACH = 2;   // Thread in exe calls DLL
      DLL_THREAD_DETACH = 3;   // Thread leaves DLL
      DLL_PROCESS_DETACH = 0; // Exe detaches from DLL
     
      procedure PointEntreDLL(Reason: DWORD);
      begin
        case Reason of
          Dll_Process_Attach: MessageBox(DLLHandle, 'Process Attach', 'Info', mb_Ok);
          Dll_Thread_Attach: MessageBox(DLLHandle, 'Thread Attach', 'Info', mb_Ok);
          Dll_Thread_Detach:MessageBox(DLLHandle, 'Thread Detach', 'Info', mb_Ok);
          Dll_Process_Detach:MessageBox(DLLHandle, 'Process Detach', 'Info', mb_Ok);
        end;                                          
      end;
     
      //implementation des fontions d'exportation ici 
     
      //Bloc Principal
      begin                                           //  code d'initialisation
        if DllProc = nil then 
        begin
           DllProc := @PointEntreDLL;
           PointEntreDLL(Dll_Process_Attach);
        end;
      end.
    @+ Phil

  3. #3
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    dans une unité tu peux ajouter un bloc initialization ou finalization :
    http://www.marcocantu.com/epascal/Fr...h11unitfr.html

  4. #4
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Points : 97
    Points
    97
    Par défaut
    anapurna,

    Ca ressemble à ça, mais en fait dans ton code, je ne vois pas à quel moment je peux désallouer la mémoire.

    J'ai besoin en quelque sorte d'un "FormCreate" et d'un "FormDestroy" sur la DLL. Je vois où je peux allouer la mémoire, mais en ce qui concerne la désallocation je ne vois pas.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Points : 97
    Points
    97
    Par défaut
    denokan,

    mon problème ne s'applique pas à une unité mais à une DLL, une "library". Je ne suis pas certain que ces blocs d'intialisation de de finalisation s'appliquent dans ce cas là.

  6. #6
    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

    dans le PointEntreDLL la ou je fait un case bin c'est a toi de faire tes test moi je n'affiche que des message

    @+ Phil

  7. #7
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 106
    Points : 97
    Points
    97
    Par défaut
    Ok, je viens de piger le truc. Merci beaucoup à vous deux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Allocation dynamique dans une fonction
    Par Kaluza dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2011, 10h23
  2. Réponses: 2
    Dernier message: 24/04/2011, 16h24
  3. allocation dynamique dans une structure !
    Par grodashe dans le forum C
    Réponses: 2
    Dernier message: 31/12/2009, 11h17
  4. Allocation dynamique dans une fonction
    Par n0mad dans le forum Débuter
    Réponses: 5
    Dernier message: 05/02/2009, 22h42
  5. Réponses: 16
    Dernier message: 06/08/2006, 23h45

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