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 :

Problème dll et transmission exception


Sujet :

Delphi

  1. #1
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut Problème dll et transmission exception
    voici 2 portions de code d'une même dll, la seconde appelant la première
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function  TMyDllObject.PlusOne: integer;
    begin
      Result:=FInt+1;
      raise EMydllException.Create('levée ici dans la dll');
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function PlusUn(const AObject: TMyAncestorObject): integer; // exportée
    var
      i: integer;
    begin
      i:=5;
      with AObject
      as TMyDllObject
      do begin
        Dec(i, 5);
        Result:=PlusOne div i; // pas d'erreur de division par zéro
      end;
      raise EMydllException.Create('pas levée ici dans la dll'); // jamais levée !!!
    end;
    je cherchais à vérifier les mécanismes de transmission des exceptions levées dans la dll à l'appli : surprise, surprise...
    mais pê y-a-t'il une bonne et belle explication ?

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Ben ta question n'est pas bien claire en fait...
    TU attendais quoi et il s'est passé quoi ?

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut
    je développe à titre d'exemple (avant de le mettre en pratique) une unité proposant un objet (TMyObject), mais exploitant une dll pour toute sa chimie interne, grâce à un ancêtre commun (TMyAncestorObject) à méthodes virtuelles, et un type local (TMyDllObject).

    c'est ainsi que la fonction TMyObject.PlusOne utilise la fonction PlusUn qui est exportée par la dll, et qui utilise elle-même la méthode TMyDllObject.PlusOne.

    mon souci est de vérifier la transmission des exceptions entre la dll et l'appli utilisatrice.

    je n'obtiens pas de remontée des exceptions déclenchées dans le corps de la fonction PlusUn, que ce soit le EZeroDivide ou celle que je lève, alors que je reçois bien celle levée dans l'appel à TMyDllObject.PlusOne !!!

    voici le point que je souhaite élucider.

    [EDIT]en fait, la fonction PlusUn n'est jamais appelée ![/EDIT]

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Ben disons que, pour moi, tu ne voit pas l'inter. de ta fonction principale car l'inter de ta dll est declenchée avant et du coup tu n'exécute pas ce qui suit : tu sors directement de la fonction (tu ne fais même pas le '+1')

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    6
    Par défaut
    en fait, c'est bien pire ! mais c'est - évidemment - ma faute !!!
    je n'avais pas calculé que le polymorphisme ferait exécuter une méthode à un objet au lieu d'une autre...

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

Discussions similaires

  1. Problème DLL et Lotus
    Par Marty000 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/11/2006, 14h00
  2. [VB.NET] Problème Dll
    Par olbi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/07/2006, 14h13
  3. VB6 Problème dll
    Par erwan.bodere dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/07/2006, 16h52
  4. Problème DLL Excel-C++-NaG
    Par maximeb dans le forum C++
    Réponses: 2
    Dernier message: 03/07/2006, 16h51
  5. Probléme DLL
    Par etranger dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2005, 16h39

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