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

Boost C++ Discussion :

[Gregorian Date] Erreur mémoire au lancement


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Par défaut [Gregorian Date] Erreur mémoire au lancement
    Bonjour,

    Au lancement mon prog en mode debug, j'ai ces lignes bizarres:
    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
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359ea04..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359e9e4..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359ea04..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359e9e4..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359ea04..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359e9e4..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359ea04..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359e9e4..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: boost::gregorian::bad_month at memory location 0x0359ea04..
    First-chance exception at 0x7c812a5b in FXTops_d.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
    Vous auriez une idée de ce à quoi c'est due?

    Je n'ai rien trouvé sur google.

    EDIT:
    voir ca:
    http://blogs.msdn.com/davidklinems/a...12/438061.aspx

    mais bon, ca m aide pas bcp.

  2. #2
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Salut,

    A vue de nez, et en regardant un peu ma boule de cristal, je dirais que ton programme utilise des , ou plus probablement des en interne, même si tu n'est pas directement au courant.

    Et que ces month sont mal initialisés (sans doute à 0), par commodité ou par ignorance.

    Du coup l'initialisation de ces objets lance des exceptions bad_month, car cela n'est pas supposé ce produire. Mais ces exceptions sont sans aucun doute gérées et traitées par le code qui utilise ces dates.

    Donc on peut croire que ce n'est pas grave.

    Après on pourrait lancer ici à nouveau un débat sur l'utilisation des exceptions. En ce qui me concerne, je crois qu'un programme qui fonctionne bien et qui ne reçoit que des données externes correctes ne devrait pas lancer d'exception. Les exceptions, ça devrait être exceptionnel.

    Il y a des gens qui croient qu'il est légitime d'utiliser les exceptions à tout bout de champ, y compris pour gérer des choses normales, et qui gèrent, par exemple, la présence de paramètres optionnels dans des données d'entrée avec des exceptions. Cela donne le genre de warnings que tu obtiens. Personnellement, je suis contre.

    Cela dit, ce que tu obtiens n'est pas forcément du à ce genre de pratique. Il se peut aussi par exemple que ton programme lise au démarrage un fichier de paramètre qui est truffé de valeurs (de dates) erronées.

    Bonne journée.

  3. #3
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Exemple de code qui pourrait générer ce que tu as :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    // cette fonction reçoit les paramètres d'entrée et les examine un a un pour :
    // 1 - vérifier qu'ils sont valides
    // 2 - les stocker au bon endroit
    bool Application::checkParams(std::list<std::string>& params)
    {
    	// on prend chaque paramètre
    	for(std::list<std::string>::iterator it = params.begin(); it != params.end(); it++)
    	{
    		// et on le checke
    		if (!checkParam(*it))
    		{
    			return false;
    		}
    	}
    	return true;
    }
    // Cette fonction reçoit un paramètre et : 
    // 1 - détermine de quel type il est
    // 2 - vérifie s'il est valide
    // 3 - le stocke
    bool Application::checkParam(const std::string& param)
    {
    	bool isAValidParam = false;
    	try
    	{
    		// ici on essaie d'interpréter le paramètre comme une date de création
    		checkDateCreation(param);
    		isAValidParam = true;
    	}
    	catch (...)
    	{
    		// si on échoue c'est que ce n'était pas une date ou pas une date valide
    		// mais ce n'est pas grave
    	}
    	try
    	{
    		// ici on essaie d'interpréter le paramètre comme un nom d'auteur
    		checkNomDeLAuteur(param);
    		isAValidParam = true;
    	}
    	catch (...)
    	{
    		// si on échoue c'est que ce n'était pas un nom d'auteur 
    		// mais ce n'est pas grave
    	}
    	try
    	{
    		// ici on essaie d'interpréter le paramètre comme une taille de fichier
    		checkTaille(param);
    		isAValidParam = true;
    	}
    	catch (...)
    	{
    		// si on échoue c'est que ce n'était pas une taille de fichier
    		// mais ce n'est pas grave
    	}
    	// si un seul des try précédent n'a pas échoué, isAValidParam est vrai
    	// sinon isAValidParam  est faux
    	return isAValidParam;
    }
    Note : attention ce code est exactement ce que je crois qu'IL NE FAUT PAS FAIRE

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

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Par défaut
    hum j utilise des gregorian date et des ptime, que j initialise par defaut, qui sont donc des 'not a date time' et que je remplis au besoin.

    Je laisse a not a date time qd dans ma base oracle j ai une date a NULL.

    Ca doit venir de la..

    Merci de ton aide.

Discussions similaires

  1. Calcul durée + Date : Erreur !
    Par priest69 dans le forum Access
    Réponses: 6
    Dernier message: 28/10/2005, 15h56
  2. message d'erreur "Mémoire insuffisante"
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2005, 14h41
  3. [Format Date] erreur sur insertion d'une date
    Par philobedo dans le forum SQL
    Réponses: 4
    Dernier message: 14/06/2005, 10h41
  4. [Compilateur] erreur sur le lancement de la compilation
    Par wickramben dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 05/05/2005, 18h43
  5. Réponses: 1
    Dernier message: 16/05/2004, 17h56

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