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

VB 6 et antérieur Discussion :

Problème Exécution en Release mais pas en Debug


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Problème Exécution en Release mais pas en Debug
    Bonjour à tous,


    Je suis face à un problème que je n'arrive pas à résoudre... J'espère que les pros du VB seront là pour y remédier...
    Je suis en train de porter une appli VB6 de Windows 2000 Server vers Windows 2003 Server. POur le moment, tous mes composants passent bien (Dll(s) et Exe(s)) mais j'ai un dernier Exe qui me sert à tester une fonctionnalité du programme.
    Ce dernier passe avec succès en mode Debug, mais lorsque je crée l'exe et que je le lance, lorsque j'arrive sur une des fonctionnalités, le programme me sort une erreur : Run-time error '440': Automation error

    Je n'arrive pas à comprendre d'où cela peut venir..... Surtout qu'en mode Debug, tout fonctionne à merveille....

    Donc je m'en remets à vous... Je ne sais plus où chercher....

    En espérant que quelqu'un puisse me venir en aide !!!!

    ++

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    CreateObject qui pointe sur une dll avec path en dur.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Je suis en train de reprendre tout le code (que je n'ai pas développé moi-même... ça aurait trop simple ) pour voir où il, pourrait y avoir un CreateObject un peu bizaroïde.....

    Mais pour ce qui est du path en dur j'ai un léger doute car entre ma machine en Windows 2000 (qui fontionne bien depuis plusieurs années) et mon serveur en 2003 (qui je l'espère fonctionnera un jour) j'ai exactement la même arborescence de répertoires....??

    Est-ce vraiment la seule option possible que d'avoir un path en dur dans un CreateObject ou cela peut venir d'autre part ?? Je ne suis pas assez calé en VB pour pouvoir juger de cela, et j'avance petit à petit, à tatons.....

    Si d'autres personnes ont des idées, tout le monde est le bienvenu.!!!!!!!!

    Encore merci pour votre aide !!

    ++

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    arrête de tout mélanger ...

    1) met des traces pour savoir où ça plante
    2) rien avoir avec l'OS, car si ça marche en release c'est bon

    T'as fait une recherche dans ton soft avec "Createobject" ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Oui, je viens de faire une recherche des CreateObject et j'ai mis un point d'arrêt sur chaque CreateObject présent dans le programme (Exe et Dll dépendantes), mais je ne m'arrête nulle part.....???...

    J'ai aussi essayé autre chose : Copier / Coller le fichier Exe depuis mon serveur 2000 vers mon 2003 (je n'ai copié que l'exe et pas les dll) mais là je me retrouve, dès le lancement de l'exe avec une erreur run-time error '-2147221231 (80040111)' Automation error ClassFactory cannot supply requested class

    Toi qui est expert en la matière, si je copie l'intégralité des exe et dll depuis mon serveur 2000 vers mon 2003 avec la même arborescence en référençant bien mes dll et mes ocx, tu penses qu'il n'y a aucun problème pour la migration 2000 vers 2003 ?

    Encore merci pour ton aide !!!!!

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Utilises tu des objets WMI ou des librairies windows ?
    Parce que certaine méthode de ces librairies peuvent ne plus exister sous 2003, ou plus chiant, certaines méthodes peuvent avoir un comportement différent.

    En général quand cela marche en debug et pas en release c'est qu'il y a un problème au niveau de l'édition de liens.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    nan faut le trouver ton problème, et moi pour ma culture personnelle je veux savoir d'où ça vient exactement.

    Met des breakpoints de partout qui te sortent des messagebox step by step et repère où ça pète précisément, dans ton code.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Merci pour vos réponses.
    Je m'y colle et je vous donne des news dès que j'ai trouvé qqch

    Mais mon problème est que même si je mets des points d'arrêt, ça ne se plante pas.

    En fait ce que j'appelle la "release" est l'exécution de l'exe... Je ne sais pas si je me suis bien exprimé sur ce point.
    En fait quand j'exécute le code en faisant "play" dans VisualStudio6, tout passe bien, mais quand je crée l'exe et que je le lance, ça se plante !!

    Si vous avez des idées pour que je puisse savoir d'où ça peut venir...???

    ++

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Librairies utilisées pour le projet
    Voici la liste des librairies utilisées pour le projet :

    Visual Basic For Applications
    Visual Basic runtime objects and procedures
    Visual Basic objects and procedures
    OLE Automation
    Microsoft XML, v3.0
    Microsoft Scripting Runtime
    Microsoft Visual Basic 6.0 Extensibility
    Microsoft Internet Controls ->(shdocvw.dll)
    Microsoft Internet Controls ->(shdocvw.oca)
    Microsoft ActiveX Data Objects 2.6 Library
    Micsosoft Active Server Page Object Library
    Micsosoft Active Server Page ObjectContext Object
    TIBCO Rendezvous 7.2 (librairie Tibco qui nous sert à envoyer / recevoir des données temps réel entre applications)

    Je ne sais pas si ça peut vous éclairer sur un éventuel problème...???

    Je me remets au boulot pour trouver la résolution de ce problème !!

    ++

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Comme te le suggérait vld, on a bien compris que ça plante pas en mode édition mais uniquement sur l'exe. Donc puisque tu ne peux pas mettre de point d'arret sur un Exe, mets des msgbox à differents endroits de ton programme, du style "Programme arrivé à la phase 1", "Programme arrivé à la phase 2", etc...
    Différencies tes messages box, s'ils ont tous le meme message ça va pas être pratique.
    Tu sauras donc ensuite que ton programme plante entre telle et telle msgbox. Si tu les a pas mal espacé dans ton code, remet des messages box intermédiaires dans la zone de plantage. Est ce plus clair ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Oui, c'est plus clair !! J'avais lu un peu trop rapidement le message ...

    Je vais commencer à les mettre et je vous donne des news...

    Encore merci

    ++

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    En fait quand j'exécute le code en faisant "play" dans VisualStudio6, tout passe bien, mais quand je crée l'exe et que je le lance, ça se plante !!
    J'aimerais bien avoir plus d'info la dessus : Fait tu play avec ou sans point d'arrêt.
    En gros est ce que cela à déjà fonctionner en mode débug sans mettre de point d'arrêt ?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Avancée dans l'analyse de l'erreur
    J'aimerais bien avoir plus d'info la dessus : Fait tu play avec ou sans point d'arrêt.
    En gros est ce que cela à déjà fonctionner en mode débug sans mettre de point d'arrêt ?
    Oui, cela fontionne avec ou sans point d'arrêt indéfféremment, quand je le lance en faisant "Play" dans VisualStudio6.

    Je vais commencer à les mettre et je vous donne des news...
    Je viens de trouver le moment exact où ça plante.
    J'explique rapidement comment fontionne le programme. Il y a des boutons sur le form et on a des boutons qui sont actifs ou inactifs suivant le stade d'avancement (il y a par exemple un bouton Create, Puis un bouton Initialiser qui s'active quand le Create a fini, etc...)
    A un moment, je fais un Load File, et il passe dans le code ci-dessous
    Tout se passe bien pour le moment (tm a un state = 2)
    Puis je clique sur un autre bouton, et tm a toujours state = 2 (c'est voulu que le state de tm ne change pas entre les deux clics)
    Donc je repasse au même endroit, je rentre bien dans le if
    Et il se plante sur le "LastTimeLabel.Caption = "NO VALUE AVAILABLE""
    Pour mémoire, Je me retrouve avec une erreur :
    Run-time error '440':
    Automation error

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
        If tm.GetState = 2 Then
     
        LastTimeLabel.Caption = "NO VALUE AVAILABLE"
            If lt2 = -1 Then
                LastTimeValideLabel.Caption = "NO VALUE AVAILABLE"
            Else
                LastTimeValideLabel.Caption = CStr(lt2) & " s" & ", " & CStr(lt2 / LastDealCount) & " s/deal"
            End If
     
     
            Frame2.Enabled = True
            Frame2.Caption = "Lot en cours - " & tm.GetCurrentTKBlockID
            'Frame3.Enabled = True
            'LogGrid.Visible = True
            StatusLabel.ForeColor = &HC000&
            StatusLabel.Caption = "(2) TRANSACTING"
     
            CreateBtn.Enabled = False
            InitBtn.Enabled = False
            BeginBtn.Enabled = False
            PriceBtn.Enabled = True
            RollbackBtn.Enabled = True
            CommitBtn.Enabled = False
            CancelPriceBtn.Enabled = False
            DestroyBtn.Enabled = True
            SaveBtn.Enabled = True
            LoadBtn.Enabled = True
            CopyBtn.Enabled = True
            PasteBtn.Enabled = True
            LoadDealBtn.Enabled = True
            UpdateDealBtn.Enabled = False
     
            RemoveDealBtn.Visible = True
            AddDealBtn.Visible = True
            AddDealBtn.Enabled = True
            InstrCombo.Visible = True
            DealList.Visible = True
            ViewerBtn.Visible = True
            Viewer2Btn.Visible = True
     
            Exit Sub

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Petite précision sur l'analyse de l'erreur
    Je viens de tester de mettre en commentaire le
    "LastTimeLabel.Caption = "NO VALUE AVAILABLE""

    A ce moment là il plante sur le suivant (LastTimeValideLabel.Caption = "NO VALUE AVAILABLE")

    et ainsi de suite.......

    ++

  15. #15
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    tu as tronqué le code ? Il manque un End if quelque part là.

    NB : essaye de lancer ton projet sous Visual Studio, en debug donc, mais en faisant CONTROLE + F5 au lieu de F5.

    Dis moi ce qu'il se passe ...

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    tu as tronqué le code ? Il manque un End if quelque part là.
    Oui désolé,
    En fait juste après la dernière ligne de code "End Sub", il y a le End If"
    Le code que j'ai mis est en fait une partie d'une fonction. Pour des raisons de confidentialité du client, je suis désolé, mais je dois en mettre le moins possible...

    essaye de lancer ton projet sous Visual Studio, en debug donc, mais en faisant CONTROLE + F5 au lieu de F5.
    Dis moi ce qu'il se passe ...
    C'est la même. Tou se passe nickel !!???!!!
    Ce qui est hallucinant, c'est qu'au premier passage, en exe, le "LastTimeLabel.Caption = "NO VALUE AVAILABLE"" passe nickel, mais au second passage, il se plante lamentablement ......??

  17. #17
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    t'as combien de projets dans ton exe, un seul ou plusieurs ? (groupe de projet)

    qu'est-ce que c'est comme composant LastTimeLabel ?

    a+

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    t'as combien de projets dans ton exe, un seul ou plusieurs ? (groupe de projet)
    J'ai un seul Exe, et 3 Dll auxquelles je fais appel, mais ces Dll sont liées en référence, ce n'est pas un groupe de projets.

    qu'est-ce que c'est comme composant LastTimeLabel ?
    C'est un type Label classique (j'affiche un label dans mon formulaire)



    Je viens de tester la chose suivante (le code ci-dessous est une partie du code que j'ai envoyé ci-avant)

    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
     
        If tm.GetState = 2 Then
        MsgBox (LastTimeLabel.Caption)
     
           LastTimeLabel.Caption = "NO VALUE AVAILABLE"
            If lt2 = -1 Then
                LastTimeValideLabel.Caption = "NO VALUE AVAILABLE"
            Else
                LastTimeValideLabel.Caption = CStr(lt2) & " s" & ", " & CStr(lt2 / LastDealCount) & " s/deal"
            End If
     
     
            Frame2.Enabled = True
            Frame2.Caption = "Lot en cours - " & tm.GetCurrentTKBlockID
            'Frame3.Enabled = True
            'LogGrid.Visible = True
            StatusLabel.ForeColor = &HC000&
            StatusLabel.Caption = "(2) TRANSACTING"
     
    '........etc..............
            End Sub
            End If
    Lors du lancement de la MsgBox, il me plante avec la même erreur ('440'), comme si mon objet semblait ne pas exister, alors que je suis dans le même formulaire et que je suis déjà passé sur ce code avant en cliquant sur le 1er bouton...???
    Clic sur Bouton1 appelé dans le code InitBtn : je passe dans le code avec un state = 2 et tout se passe bien
    Clic sur bouton2 appelé dans le code PriceBtn : Lors de l'appel aux composants du formulaire, il me plante....???

    ET TOUT ça UNIQUEMENT EN RELEASE ....?????........


  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Une possibilité est que tu détruis ton lasttimelabel après la première exécution et donc il n'est plus accessible à la deuxième exécution.
    Vérifie si tu ne le detruis pas.

  20. #20
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Soit ce n'est pas une copie brute de ton code, soit y'a erreur parce que "End if" APRES "End Sub" ça le fait pas....

    Mais on ne sait pas d'où vient cette procédure... Est elle dans le code de la feuille où sont placés tes contrôles ? Dans un module à part ? Peux tu essayer en précisant le nom de ta feuille avant le nom du contrôle voir si tu as toujours l'erreur ?

Discussions similaires

  1. Exception en release mais pas en debug
    Par max-mag dans le forum Débuter
    Réponses: 2
    Dernier message: 22/08/2014, 16h32
  2. Réponses: 0
    Dernier message: 27/06/2012, 23h35
  3. Réponses: 6
    Dernier message: 20/05/2010, 11h34
  4. Acces violation avec la version release, mais pas la debug
    Par Matthieu Brucher dans le forum Qt
    Réponses: 5
    Dernier message: 07/03/2010, 21h20
  5. Problème d'exécution en release mais pas en debug (2)
    Par animageo dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/11/2007, 14h22

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