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

Langage Delphi Discussion :

Problèmes de libération de Dll en delphi7 sous windows XP


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut Problèmes de libération de Dll en delphi7 sous windows XP
    La libération d'une dll affichant une forme me crée des problèmes.

    La dll crée, affiche puis détruit une forme.
    Lorsque je la libére (libération manuelle si chargement dynamique ou fin du programme si chargement statique de la dll) le système me fait une erreure de "violation d'acces" ou de "runtime 216" (utilisation d'un pointeur non attribué).

    j'avais déja eu une fois ce type de problèmes que j'avais attribuè au thémes windows XP (Themes.Pas). Je n'avais pas pus le corriger, mais j'avais contourner le problèmes en n'utilisant pas de forme dans la dll.
    Cett solution m'est malheureusement impossible dans le cas présent.

    Cet fois j'ai pus utiliser EurekaLog (un debuger) qui m'a indiquer un problème dans la function "CloseThemeData" de la DLL "UxTheme" de windows.
    Même problème sous windows 2000 sauf que le plantage se passe entierement dans l'unite "Themes.pas" de delphi.

    Quelqun sait'il comment resoudre ce problème ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Au moment ou tu appelles des fonctions affichant la form, passes tu le handle de l'application à la DLL pour qu'elle puisse l'assigner à son objet Application ? As tu vérifié le contenu de tes clauses Initialization et Finalization ?
    "It's more fun to compute !"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Dans les 2 cas oui.

    Cependant il m'a été indiqué par un autre canal une manière de m'en sortire.

    Si l'on dispose des composant de 'Developeur expresse' (puissant mais relativement chère et pas toujour trés stable), il suffit d'inclure un composant developeur expresse dans mas forme.

    Il sufit ensuit d'appeler la fonction 'CloseAllThemes' de l'unité 'DxThemeManager' apres avoir utilisé la dll.

    Ce n'est pas tres propre ni tés conventionelle, mais cela fonctionne.


    MErci pour l'aide

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Reisubar
    Au moment ou tu appelles des fonctions affichant la form, passes tu le handle de l'application à la DLL pour qu'elle puisse l'assigner à son objet Application ? As tu vérifié le contenu de tes clauses Initialization et Finalization ?
    Je reactive le sujet car j'ai exactement le meme probleme (mais moi je ne sais pas comment le detourner). Dois-je passer le Handle de l'application a la DLL? comment faire ca?

    ::

  5. #5
    Membre averti
    Avatar de delphichem
    Inscrit en
    Octobre 2002
    Messages
    280
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 280
    Points : 338
    Points
    338
    Par défaut
    Salut
    utilises-tu LoadLibrary pour charger la Dll est FreeLibrary pour la décharger ?

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par delphichem
    Salut
    utilises-tu LoadLibrary pour charger la Dll est FreeLibrary pour la décharger ?
    Je load la DLL statiquement. En fait, j'ai besoin de ce code pour innosetup. Je ne sais pas si c'est possible de charger une DLL dynamiquement avec inno.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2008, 17h23
  2. Réponses: 2
    Dernier message: 14/06/2007, 17h52
  3. Réponses: 2
    Dernier message: 11/01/2007, 13h29
  4. Réponses: 3
    Dernier message: 31/08/2006, 11h59
  5. Problème de libération de DLL - Web Service
    Par Laurent_75000 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 18/05/2006, 13h25

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