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

WinDev Discussion :

Problème Classe et bibliothèque externe


Sujet :

WinDev

  1. #1
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut Problème Classe et bibliothèque externe
    Bonjour,

    J'ai plusieurs projets qui ont des fenêtres en commun, j'utilise donc des bibliothèques externes pour éviter d'avoir des fenêtres en double.
    Le soucis est que lorsque je recréé l'exécutable d'un des projets et que je l'exécute j'ai une erreur lorsque j'appel une fenêtre présente dans l'un des .WDL d'un autre projet, j'ai comme erreur "Une erreur système inattendue est survenue".
    Quand je regarde à la ligne ou il y a l'erreur, c'est toujours à l'endroit ou il y a une procédure d'une classe commune à l'intégralité des projets.

    Dés le moment ou je refait l'intégralité des exécutables des projets qui sont en communs il n'y a plus d'erreur.

    J'ai essayé avec les bibliothèques externes et aussi avec les bibliothèques secondaires ou je décoche les classes accessible depuis les projets externes pour prendre en compte les classes de l'exécutable qui appel la bibliothèque mais rien y fait j'ai toujours des erreurs.

    La solution de recréer les exécutables à chaque modification dans un projet est assez fastidieuse si quelqu'un a une solution je suis preneur.

    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Salut,

    J'utilise régulièrement ce système et également avec des classes.
    Le côté négatif de cela est le débuggage

    Lorsqu'une des bib ou l'exe principal est modifié, je ne compile que celui-ci et ça fonctionne très bien.

    Il faut faire attention au nommage de classe mais je pense que c'est fait , dans le sens où si dans une bib, tu possèdes cToto et que dans une autre, tu as également cToto, l'exe ne prendra qu'une des 2 en compte (ordre de chargement ?).

    Pour débugger, tu peux activer le log, pour ainsi récupérer l'ensemble des objets et leurs valeurs.

  3. #3
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Chez moi ça ne marche pas

    Le log ne m'apporte rien plus que je ne savais déjà, il bloque au niveau de l'appel d'une procédure d'une des classes, et je n'ai pas de raison.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Alors éventuellement, peux-tu dans le projet de la bib, simuler l'utilisation de cette procédure avec les valeurs du log ?

  5. #5
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    C'est à dire ?

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Dans l'initialisation de mes projets qui sont ensuite compilés en bib, j'ai ce type de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI EnModeTest() ALORS
    	ChargeWDL("C:\Program Files\WMP\lib\GES0050.WDL")
    	ChargeWDL("C:\Program Files\WMP\lib\GES0300.WDL")
    	ChargeWDL("C:\Program Files\WMP\lib\GES0500.WDL")
    ...
    FIN
    Je charge toutes les bib nécessaires en mode test pour un fonctionnement autonome lors des tests.

    Si par exemple, j'ai besoin d'utiliser une procédure d'une classe du style cMaClasse:maProc(pObj) qui prend en paramètre un objet, j'ajoute dans le code ci-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    oObjetAutre est un "cMaClasseAutre"(paramètres du constructeur)
    oObjet est un "cMaClasse"(paramètres du constructeur)
    oObjet:maProc(oObjetAutre)
    Je ne sais pas si je suis clair

  7. #7
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Je ne pense qu'il y ai des soucis avec les paramètres de ma classe puisqu'une régénération de l'exécutable résout le problème.
    Je pensais plutôt à un soucis de version au niveau de la classe, ou Windev serais perdu, ou un truc du style.

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Qu'entends-tu par version de classe ?

  9. #9
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Version n'est pas le bon terme, mais comme c'est une classe partagé entre plusieurs projets, si il y a eu des modifications dans la classe, les bibliothèques ne l'ont pas eu par exemple.

  10. #10
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    ok, j'avais bien compris dans ce sens

    Par contre, ce que je ne comprend pas, c'est que si la classe partagée est modifiée, les autres bib ne l'ont pas ?

    Je prends un exemple :
    Tu as une Bib1 avec une classe1.
    Les Bib2 et 3 utilisent la Bib1 pour accèder à la classe1.

    Si tu modifies classe1, les autres bib auront également la modification, il te suffit de compiler la nouvelle version de la Bib1, non ?

  11. #11
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Oui c'est bien ça.
    Une procédure de la classe de Bib1 ne plantera pas, par contre la meme procédure de la classe de bib1 dans bib2 va planter.
    Est-ce que j'utilise mal la création de bibliothèque ou autre chose je ne sais pas

  12. #12
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Ben, la génération d'une bib ne donne pas beaucoup de possibilité dans le paramétrage, à part cocher ou décocher les éléments que tu veux dans la bib, donc je ne pense pas que ce soit là.

    Pour que Bib2 utilise Bib1, tu utilises un ChargeWDL(..) ?

  13. #13
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Oui en l'occurrence c'est exe1 qui charge bib2 :p
    Surtout que dans Bib2 il n y a pas les classes, elles sont dans exe2, elle doit forcément prendre celle de exe1

  14. #14
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    je me paume un peu, tu as 2 exe ?

    Pourrais-tu succinctement décrire la structure entre les exe et les bib ?

  15. #15
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    En gros comme application j'ai ça :
    doccom.exe + fourniss.wdl + engagem.wdl
    fourniss.exe + doccom.wdl
    engagem.exe + doccom.wdl

    En gros quand je refait l'exécutable de doccom, elle va planter dans les fenêtres de fourniss.wdl ou d'engagem.wdl si dedans il y a des appels de procédures de classe qui sont dans doccom.exe

    Suis-je clair ?

  16. #16
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    On va voir ça de suite ^^

    L'application principale "doccom.exe" charge 2 bibs (fourniss.wdl + engagem.wdl) qui utilisent des classes de "doccom.exe", c'est ça ?

    Ou est-ce que, en plus, chacune des bibs charge une bibliothèque "doccom.wdl" ?
    Si c'est le cas, je pense que le problème vient de là.

    Pour l'application finale, les fichiers "doccom.exe" et "doccom.wdl" sont 2 fichiers distincts, qui donne "doccom.wdl" vainqueur dans l'ordre de chargement et donc de l'accès à une ancienne version de la procédure modifiée.

  17. #17
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    En gros j'ai pas d'application principal.
    J'ai une dizaine d'applications qui prennent des fenêtres par ci par là.
    Les classes ne sont stockés que dans les .exe
    Les .exe sont indépendants de leurs .WDL respectif, c'est à dire que Doccom.exe fonctionne sans Doccom.WDL (Bibliothèque secondaire) qui ne sert que pour les applications qui en ont besoin.

  18. #18
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    ok, n'as-tu pas le cas de figure de "doccom.exe" qui charge "fourniss.wdl", qui lui-même charge "doccom.wdl" ?
    D'où le pourquoi il te faudrait compiler les exe et les bibs à chaque fois.

  19. #19
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Le chargement des .WDL se fait dans le code d'initialisation du projet, qui ne doit pas être exécuté, enfin je pense puisque dans les .WDL puisqu'il n'y a que des fenêtres, états et les procédure globales.

  20. #20
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    En effet, le code d'initilisation du projet n'est pas exécuté dans les WDL.

    A part le fait, que j'aurai plutôt externalisé tous les éléments communs/utilisables par les exécutables et ainsi évité d'avoir à compiler un projet en EXE et en WDL, je ne vois plus trop où chercher

    Par contre, un tout petit avis, je pense malgré tout qu'il faut se pencher du côté de ses différents appels de EXE utilisé en WDL et vice versa

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/07/2013, 09h21
  2. Réponses: 1
    Dernier message: 19/04/2010, 14h24
  3. Problème classe livre pour bibliothéque
    Par Invité dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 06/12/2008, 09h57
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. Réponses: 6
    Dernier message: 20/09/2004, 15h26

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