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

C++Builder Discussion :

Problème Borland, il n'aime pas la vitesse


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut Problème Borland, il n'aime pas la vitesse
    Bonjour,

    Je suis confronté à un problème qui arrive de temps à autres.

    Lorsque j'ai un problème dans mon code, le programme fige lors de l'essai (ce qui est normal). Toutefois, ce qui me surprend toujours, c'est que quelques fois lorsque j'essais de trouver où est le problème j'utilise des boîte de message (ShowMessage) afin de connaître par où le programme passe et quels sont les valeurs avant de figer et un phénomène étrange arrive : le code devient fonctionnel.

    Je sais que ça peut paraître insensé. À chaque fois, je me dis (à tord) que le logiciel n'aime pas effectuer ces tâches trop rapidement et le fait de mettre une boîte de message lui donne une pause. En fait, je sais que le problème n'est pas là. Souvent je trouve l'erreur pas trop loin de la section où j'insère le "ShowMessage", mais je me demandais si quelqu'un a déjà vue quelque chose de similaire. Si oui, avez-vous une idée du type d'erreur de code qui cause ce comportement? Ça m'aiderait à l'avenir de trouver plus rapidement le problème.

    Se peut-il qu'il y ait un overload de la mémoire et le ShowMessage permet à l'ordi de vider un peu la mémoire avant de recommencer? Il faudrait que j'utilise mieux mes vecteurs..?

    Enfin, c'est peut-être plus une discussion ouverte sur les comportements aléatoire des codes que je lance plutôt qu'une question précise...

    Bonne journée!

    Antoine

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 190
    Par défaut
    Bonsoir Antoine,

    Citation Envoyé par antoinelac Voir le message
    Se peut-il qu'il y ait un overload de la mémoire et le ShowMessage permet à l'ordi de vider un peu la mémoire avant de recommencer? Il faudrait que j'utilise mieux mes vecteurs..?
    En ce qui concerne des plantages aléatoire, c'est bien souvent de ce côté là qu'il faut chercher.

    Plutôt que d'utiliser des ShowMessage, as tu essayé de debugger ton application 'pas à pas', en plaçant des break points?

    Essaye aussi de compiler ton application avec CodeGuard (dans les options de projet, onglet 'CodeGuard', tu coches toutes les cases et tu fais un build complet avant de relancer ton application).
    Cela ne fonctionne pas toujours, mais il arrive parfois à détecter de mauvais accès mémoire.

    Bon courage,

    Cordialement,

    Benjamin

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut Vecteur
    Merci pour l'info, je ne pige pas toujours ce que CodeGear me dit, mais ça me montre plus vers où chercher.

    J'avais oublié à quel point que les breakpoints sont pratiques! Je me sers toujours des ShowMessages (plus rapide pour trouver l'emplacement fautif, on a qu'à appuyer sur "enter" pour passer au prochain ShowMessage, plutôt que de devoir clicker sur la flèche verte). Mais,les breakpoint sont intéressants pour connaître les valeurs!!

    Mon problème venait d'une tentative d'atteindre une position de vecteur inexistant (trop loin).

    Merci pour votre réponse!!


    Antoine

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    Bonjour à tous,


    Je reviens sur ma position, les showmessage sont très dangereux ou plutôt peuvent être pratiques. Grâce aux breakpoints, j'ai trouvé que j'avais oublié d'initialiser une variable à 0 lorsque je la créais et encore pire, dans des situations précises je me trouvais à l'utiliser sans jamais l'avoir initialisé (boucles de for et de if qui permettaient dans une situation d'éviter toute initialisation). Alors, lorsque je mettais un "showmessage" l'espace alloué à cet variable était soit déplacé ou modifié (je ne sait trop) et alors là mon code fonctionnait parce que la variable pouvait avoir n'importe quel valeur sauf -1 pour que sa fonctionne. Alors que lorsque je ne mettais pas de ShowMessage, le code avait accès à la dernière valeur puisque la variable n'avait pas changer de place. Si cette valeur était -1, j'étais foutu.

    Grande leçon de vie!

    Si en ajoutant une ShowMessage, votre code devient ou pas fonctionnel, il s'agit de mémoire mal gérée.

    merci à tous,

    antoine

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 59
    Par défaut ShowMessage ou
    Citation Envoyé par antoinelac Voir le message
    Bonjour à tous,


    Je reviens sur ma position, les showmessage sont très dangereux ou plutôt peuvent être pratiques. Grâce aux breakpoints, j'ai trouvé que j'avais oublié d'initialiser une variable à 0 lorsque je la créais et encore pire, dans des situations précises je me trouvais à l'utiliser sans jamais l'avoir initialisé (boucles de for et de if qui permettaient dans une situation d'éviter toute initialisation). Alors, lorsque je mettais un "showmessage" l'espace alloué à cet variable était soit déplacé ou modifié (je ne sait trop) et alors là mon code fonctionnait parce que la variable pouvait avoir n'importe quel valeur sauf -1 pour que sa fonctionne. Alors que lorsque je ne mettais pas de ShowMessage, le code avait accès à la dernière valeur puisque la variable n'avait pas changer de place. Si cette valeur était -1, j'étais foutu.

    Grande leçon de vie!

    Si en ajoutant une ShowMessage, votre code devient ou pas fonctionnel, il s'agit de mémoire mal gérée.

    merci à tous,

    antoine
    Dans bien des cas Application->ProcessMessages();
    peut résoudre ce problème

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

Discussions similaires

  1. [ Problème ] .htaccess qui ne marche pas "partout"
    Par nnet_mathieu dans le forum Apache
    Réponses: 8
    Dernier message: 22/11/2005, 19h34
  2. problème que je n'arrive pas à résoudre de façon récursive
    Par miam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/07/2004, 11h21
  3. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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