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++ Discussion :

0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x000000b4.


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lyon
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x000000b4.
    Bonjour,
    Je suis en école d'ingénieur et j'ai un projet informatique à coder en language C++ à rendre. Je suis donc plutôt débutant mais à l'aise en informatique
    J'ai donc installer visual studio 2010 version ultimate pour l'effectuer sur mon pc.

    Lors de l’exécution du programme ( il n'y a aucune erreur à la compilation ) la sortie de visual m'affiche :
    Exception de première chance à 0x008571b6 dans TPSSMARIN.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x000000b4.
    Exception non gérée à 0x008571b6 dans TPSSMARIN.exe*: 0xC000041D: Une exception non gérée a été détectée pendant un rappel de l’utilisateur.

    Pensant à une erreur de ma part j'ai demandé à une amie de ma classe son projet terminé qui fonctionne chez elle, au final il m'affiche aussi cette erreur là.
    En testant mon programme sur son pc ( avec la même version de visual récupéré sur dreamspark), il s'avère que celui ci fonctionne parfaitement, j'en conclue donc que le soucis ne vient pas du code mais de mon pc.
    J'ai tenté de réparer visual 2010 , j'ai installer visual 2013 ( update 4), installer le service pack 1 de 2010 mais rien n'y fait le même message s'affiche toujours en boucle ( le comique de répétition c'est pas mon truc)

    Ma recherche sur les différent forums, site... ont pour cause une faute dans les pointeurs null ( que j'ai éliminé puisque ça marche chez les autres).

    Je suis à cours d'idée, auriez vous des pistes à m'indiquez?


    Je vous met ma configuration logicielle au cas où:
    Windows 8.1
    visual studio 2010 ultimate
    visual studio 2013 pro update 4


    Merci d'avance pour l'aide que vous pourrez m'apporter

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Citation Envoyé par brendan29 Voir le message
    Ma recherche sur les différent forums, site... ont pour cause une faute dans les pointeurs null ( que j'ai éliminé puisque ça marche chez les autres).
    C'est ce qui semble le plus probable.

    On peut voir le code ? (Au moins la partie qui pose problème).

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lyon
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Iradrille pour ton aide

    Je vais donc détailler un peu plus le projet dans ce cas, c'est une application mfc ou l'on doit rentrer des valeurs pour un sous marin et selon les résultats de la consommation afficher si la mission est possible.
    Ce qui est le plus étrange c'est qu'il fonctionne parfaitement sur le pc de mes collègues

    Voici le .cpp de mon document ( seul endroit où j'utilise des pointeurs:

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
     
    // TPSSMARINDoc.cpp : implémentation de la classe CTPSSMARINDoc
    //
     
    #include "stdafx.h"
    // SHARED_HANDLERS peuvent être définis dans les gestionnaires d'aperçu, de miniature
    // et de recherche d'implémentation de projet ATL et permettent la partage de code de document avec ce projet.
    #ifndef SHARED_HANDLERS
    #include "TPSSMARIN.h"
    #endif
     
    #include "TPSSMARINDoc.h"
     
    #include <propkey.h>
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
     
    // CTPSSMARINDoc
     
    IMPLEMENT_DYNCREATE(CTPSSMARINDoc, CDocument)
     
    BEGIN_MESSAGE_MAP(CTPSSMARINDoc, CDocument)
    	ON_COMMAND(ID_DEFINIR_SOUSMARIN, &CTPSSMARINDoc::OnDefinirSousmarin)
    END_MESSAGE_MAP()
     
     
    // construction ou destruction de CTPSSMARINDoc
     
    CTPSSMARINDoc::CTPSSMARINDoc()
    {
    	// TODO: ajoutez ici le code d'une construction unique
    	m_pSousmarin=NULL;
    }
     
    CTPSSMARINDoc::~CTPSSMARINDoc()
    {if (NULL!=m_pSousmarin)
    	{
    		delete m_pSousmarin;
    		m_pSousmarin=NULL;
    	}
    }
     
    BOOL CTPSSMARINDoc::OnNewDocument()
    {
    	if (!CDocument::OnNewDocument())
    		return FALSE;
     
    	// TODO: ajoutez ici le code de réinitialisation
    	// (les documents SDI réutiliseront ce document)
     
    	return TRUE;
    }
     
     
     
     
    // sérialisation de CTPSSMARINDoc
     
    void CTPSSMARINDoc::Serialize(CArchive& ar)
    {
    	if (ar.IsStoring())
    	{
    		// TODO: ajoutez ici le code de stockage
    	}
    	else
    	{
    		// TODO: ajoutez ici le code de chargement
    	}
    }
     
    #ifdef SHARED_HANDLERS
     
    // Prise en charge des miniatures
    void CTPSSMARINDoc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
    {
    	// Modifier ce code pour dessiner les données du document
    	dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));
     
    	CString strText = _T("TODO: implement thumbnail drawing here");
    	LOGFONT lf;
     
    	CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
    	pDefaultGUIFont->GetLogFont(&lf);
    	lf.lfHeight = 36;
     
    	CFont fontDraw;
    	fontDraw.CreateFontIndirect(&lf);
     
    	CFont* pOldFont = dc.SelectObject(&fontDraw);
    	dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);
    	dc.SelectObject(pOldFont);
    }
     
    // Support pour les gestionnaires de recherche
    void CTPSSMARINDoc::InitializeSearchContent()
    {
    	CString strSearchContent;
    	// Définir le contenu de recherche à partir des données du document. 
    	// Les parties du contenu doivent être séparées par ";"
     
    	// Par exemple*:  strSearchContent = _T("point;rectangle;circle;ole object;");
    	SetSearchContent(strSearchContent);
    }
     
    void CTPSSMARINDoc::SetSearchContent(const CString& value)
    {
    	if (value.IsEmpty())
    	{
    		RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);
    	}
    	else
    	{
    		CMFCFilterChunkValueImpl *pChunk = NULL;
    		ATLTRY(pChunk = new CMFCFilterChunkValueImpl);
    		if (pChunk != NULL)
    		{
    			pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);
    			SetChunkValue(pChunk);
    		}
    	}
    }
     
    #endif // SHARED_HANDLERS
     
    // diagnostics pour CTPSSMARINDoc
     
    #ifdef _DEBUG
    void CTPSSMARINDoc::AssertValid() const
    {
    	CDocument::AssertValid();
    }
     
    void CTPSSMARINDoc::Dump(CDumpContext& dc) const
    {
    	CDocument::Dump(dc);
    }
    #endif //_DEBUG
     
     
    // commandes pour CTPSSMARINDoc
     
     
    void CTPSSMARINDoc::DeleteContents()
    {
    	// TODO: ajoutez ici votre code spécialisé et/ou l'appel de la classe de base
    		if (NULL!=m_pSousmarin)
    	{
    		delete m_pSousmarin;
    		m_pSousmarin=NULL;
    	}
     
    	CDocument::DeleteContents();
    }
     
     
    void CTPSSMARINDoc::OnDefinirSousmarin()
    {
    	// TODO: ajoutez ici le code de votre gestionnaire de commande
    	CSsmarindlg Dlg;
    if (m_pSousmarin != NULL)
    	{
    		Dlg.m_dPuissdlg = m_pSousmarin->GetPuissance();
    		Dlg.m_dEnrichdlg = m_pSousmarin->GetEnrichissement();
    		Dlg.m_dStockdlg = m_pSousmarin->GetStockage();
    		Dlg.m_dTempsdlg = m_pSousmarin->GetTemps();
     
    	}
    	else
    	{
    		Dlg.m_dPuissdlg = 0.0;
    		Dlg.m_dEnrichdlg = 0.0;
    		Dlg.m_dStockdlg = 0.0;
    		Dlg.m_dTempsdlg = 0.0;
    	}
     
    	if (Dlg.DoModal() == IDOK)
    	{
    		delete m_pSousmarin;
    		m_pSousmarin = new CSousmarin(Dlg.m_dPuissdlg, Dlg.m_dEnrichdlg, Dlg.m_dStockdlg, Dlg.m_dTempsdlg);
    	}
     
    	UpdateAllViews(NULL);
    }
    CSousmarin* CTPSSMARINDoc::getSousmarin()
    {
    	return m_pSousmarin;
    }
    Voici mon .cpp pour la vue:
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
     
    // TPSSMARINView.cpp : implémentation de la classe CTPSSMARINView
    //
     
    #include "stdafx.h"
    // SHARED_HANDLERS peuvent être définis dans les gestionnaires d'aperçu, de miniature
    // et de recherche d'implémentation de projet ATL et permettent la partage de code de document avec ce projet.
    #ifndef SHARED_HANDLERS
    #include "TPSSMARIN.h"
    #endif
     
    #include "TPSSMARINDoc.h"
    #include "TPSSMARINView.h"
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
     
     
    // CTPSSMARINView
     
    IMPLEMENT_DYNCREATE(CTPSSMARINView, CView)
     
    BEGIN_MESSAGE_MAP(CTPSSMARINView, CView)
    	// Commandes d'impression standard
    	ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
    	ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
    	ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CTPSSMARINView::OnFilePrintPreview)
    	ON_WM_CONTEXTMENU()
    	ON_WM_RBUTTONUP()
    END_MESSAGE_MAP()
     
    // construction ou destruction*de CTPSSMARINView
     
    CTPSSMARINView::CTPSSMARINView()
    {
    	// TODO: ajoutez ici du code de construction
     
    }
     
    CTPSSMARINView::~CTPSSMARINView()
    {
    }
     
    BOOL CTPSSMARINView::PreCreateWindow(CREATESTRUCT& cs)
    {
    	// TODO: changez ici la classe ou les styles Window en modifiant
    	//  CREATESTRUCT cs
     
    	return CView::PreCreateWindow(cs);
    }
     
    // dessin de CTPSSMARINView
     
    void CTPSSMARINView::OnDraw(CDC* pDC)
    {
    	CTPSSMARINDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    	if (!pDoc)
    		return;
     
     
    	// TODO: ajoutez ici le code de dessin pour les données natives
     
    		CPen ThePen; // création du crayon pour le cadre 
    	ThePen.CreatePen(PS_SOLID,1,RGB(pDoc->getSousmarin()->Getcolora(),pDoc->getSousmarin()->Getcolora(),255)); // choix de la couleur du crayon
    	CPen * OldPen= pDC->SelectObject(&ThePen); // application de cette couleur à notre crayon pour tracer les ligne
    	pDC->MoveTo(5,35);  // réalisation du cadre lorsque des valeurs sont rentrée dans la boite de dialogue
    	pDC->LineTo(5,190);
    	pDC->MoveTo(5,35); 
    	pDC->LineTo(400,35);
    	pDC->MoveTo(400,35); 
    	pDC->LineTo(400,190);
    	pDC->MoveTo(5,190); 
    	pDC->LineTo(400,190);
     
     
     
    	pDC->SetTextColor(RGB(pDoc->getSousmarin()->Getcolora(),pDoc->getSousmarin()->Getcolora(),pDoc->getSousmarin()->Getcolora()));
    	pDC->TextOutW(10,40,_T("Le temps de la mission est en jours :"));
    	pDC->TextOutW(260,40,pDoc->getSousmarin()->Tempsasstr());
     
    	pDC->TextOutW(10,80,_T("Capacité de stockage du sous-marin en kg: "));
    	pDC->TextOutW(290,80,pDoc->getSousmarin()->Stockasstr());
     
    	pDC->TextOutW(10,120,_T("Puissance du sous marin en MW: "));
    	pDC->TextOutW(235,120,pDoc->getSousmarin()->Puissasstr());
     
    	pDC->TextOutW(10,160,_T("Enrichissement de l'Uranium en %: "));
    	pDC->TextOutW(240,1600,pDoc->getSousmarin()->Enrichasstr());
     
    	pDC->TextOutW(10,240,_T(" Le temps de mission maximale d'après les informations entrée est "));
    	pDC->TextOutW(455,240,pDoc->getSousmarin()->Tempsmaxasstr());
    	// changement de la couleur du texte en rouge ou en vert selon la faisabilité de la mission
    	pDC->SetTextColor(RGB(pDoc->getSousmarin()->Getcolor1(),pDoc->getSousmarin()->Getcolor2(),pDoc->getSousmarin()->Getcolor3()));
    	pDC->TextOutW(10,300,pDoc->getSousmarin()->Retourmission());
     
    // dessin sous marin:
    	CPen ThePen2;
    ThePen2.CreatePen(PS_SOLID,1,RGB(205,129,98)); // choix de la couleur rouille  pour le crayon  
    	pDC->SelectObject(&ThePen2);
    pDC->MoveTo(600,80);
    pDC->LineTo(800,80);
    pDC->MoveTo(600,120);
    pDC->LineTo(800,120);
    pDC->MoveTo(600,80);
    pDC->LineTo(570,100);
    pDC->MoveTo(600,120);
    pDC->LineTo(570,100);
    pDC->MoveTo(800,80);
    pDC->LineTo(820,90);
    pDC->MoveTo(800,120);
    pDC->LineTo(820,110);
    pDC->MoveTo(820,120);
    pDC->LineTo(820,110);
    pDC->MoveTo(820,80);
    pDC->LineTo(820,90);
    pDC->MoveTo(820,80);
    pDC->LineTo(825,80);
    pDC->MoveTo(820,120);
    pDC->LineTo(825,120);
    pDC->MoveTo(825,80);
    pDC->LineTo(825,120);
     
    pDC->MoveTo(700,80);
    pDC->LineTo(700,65);
    pDC->MoveTo(700,65);
    pDC->LineTo(750,65);
    pDC->MoveTo(750,65);
    pDC->LineTo(750,80);
    pDC->SetTextColor(RGB(pDoc->getSousmarin()->Getcolora(),pDoc->getSousmarin()->Getcolora(),pDoc->getSousmarin()->Getcolora()));
    pDC->TextOutW(610,90,_T("K 19"));
    //dessin hublot
    pDC->MoveTo(650,90);
    pDC->LineTo(650,100);
    pDC->MoveTo(650,90);
    pDC->LineTo(660,90);
    pDC->MoveTo(650,100);
    pDC->LineTo(660,100);
    pDC->MoveTo(660,90);
    pDC->LineTo(660,100);
     
    pDC->MoveTo(680,90);
    pDC->LineTo(680,100);
    pDC->MoveTo(680,90);
    pDC->LineTo(690,90);
    pDC->MoveTo(680,100);
    pDC->LineTo(690,100);
    pDC->MoveTo(690,90);
    pDC->LineTo(690,100);
     
    pDC->MoveTo(710,90);
    pDC->LineTo(710,100);
    pDC->MoveTo(710,90);
    pDC->LineTo(720,90);
    pDC->MoveTo(710,100);
    pDC->LineTo(720,100);
    pDC->MoveTo(720,90);
    pDC->LineTo(720,100);
     
    pDC->MoveTo(740,90);
    pDC->LineTo(740,100);
    pDC->MoveTo(740,90);
    pDC->LineTo(750,90);
    pDC->MoveTo(740,100);
    pDC->LineTo(750,100);
    pDC->MoveTo(750,90);
    pDC->LineTo(750,100);
     
    pDC->MoveTo(770,90);
    pDC->LineTo(770,100);
    pDC->MoveTo(770,90);
    pDC->LineTo(780,90);
    pDC->MoveTo(770,100);
    pDC->LineTo(780,100);
    pDC->MoveTo(780,90);
    pDC->LineTo(780,100);
     
    // fenêtre d'accueil:
    pDC->SetTextColor(RGB(pDoc->getSousmarin()->Getcolorb(),pDoc->getSousmarin()->Getcolorb(),pDoc->getSousmarin()->Getcolorb()));
    pDC->TextOutW(50,120,_T("Bonjour! et bienvenue sur le programme Sousmarin"));
    pDC->TextOutW(30,200,_T("pour vérifier la faisabilité de la mission ,entrez les valeurs demandées dans fichier-> définir -> Sous marin"));
    pDC->TextOutW(750,500,_T("programmé par: Brendan FALHON"));
    }
     
    // impression de CTPSSMARINView
     
     
    void CTPSSMARINView::OnFilePrintPreview()
    {
    #ifndef SHARED_HANDLERS
    	AFXPrintPreview(this);
    #endif
    }
     
    BOOL CTPSSMARINView::OnPreparePrinting(CPrintInfo* pInfo)
    {
    	// préparation par défaut
    	return DoPreparePrinting(pInfo);
    }
     
    void CTPSSMARINView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    	// TODO: ajoutez une initialisation supplémentaire avant l'impression
    }
     
    void CTPSSMARINView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
    {
    	// TODO: ajoutez un nettoyage après l'impression
    }
     
    void CTPSSMARINView::OnRButtonUp(UINT /* nFlags */, CPoint point)
    {
    	ClientToScreen(&point);
    	OnContextMenu(this, point);
    }
     
    void CTPSSMARINView::OnContextMenu(CWnd* /* pWnd */, CPoint point)
    {
    #ifndef SHARED_HANDLERS
    	theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);
    #endif
    }
     
     
    // diagnostics pour CTPSSMARINView
     
    #ifdef _DEBUG
    void CTPSSMARINView::AssertValid() const
    {
    	CView::AssertValid();
    }
     
    void CTPSSMARINView::Dump(CDumpContext& dc) const
    {
    	CView::Dump(dc);
    }
     
    CTPSSMARINDoc* CTPSSMARINView::GetDocument() const // la version non Debug est inline
    {
    	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTPSSMARINDoc)));
    	return (CTPSSMARINDoc*)m_pDocument;
    }
    #endif //_DEBUG
     
     
    // gestionnaires de messages pour CTPSSMARINView

    et voici le .cpp pour la classe du Sous marin défini dans la boite de dialogue:
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    // Sousmarin.cpp*: fichier d'implémentation
    //
     
    #include "stdafx.h"
    #include "TPSSMARIN.h"
    #include "Sousmarin.h"
     
     
    // CSousmarin
     
    IMPLEMENT_DYNAMIC(CSousmarin, CWnd)
     
    CSousmarin::CSousmarin()
    {
     
    	m_dPuissance = 0.0;
    	m_dEnrichissement = 0.0;
    	m_dStockage = 0.0;
    	m_dTemps = 0.0;
    }
     
    CSousmarin::~CSousmarin()
    {
    }
    CSousmarin::CSousmarin(double Puissance,double Enrichissement,double Stockage,double Temps){
    	m_dPuissance= Puissance;
    	m_dEnrichissement=Enrichissement;
    	m_dStockage=Stockage;
    	m_dTemps=Temps;
    	Consommation();
    Tempsmax();
    	Retourcouleur();
    	}
    double CSousmarin::Consommation(){
    	m_dConsommation= (m_dPuissance*1000000*86400*6.241509354*1000000000000*235.0439299)/(193*6.02214129*100000000000*1000000000000*m_dEnrichissement/100);
    	return m_dConsommation;
    }
    double CSousmarin::Tempsmax(){
    	m_dTempsmax=m_dStockage*1000/m_dConsommation;
    	return m_dTempsmax;
    }
    CString CSousmarin::Retourmission()
    {CString m_sMission;
     
    	if (m_dTemps <= m_dTempsmax)
    	{	
    		m_sMission ="La mission est possible avec ce sous marin";
     
    	}
     
    	else
    	{
    		m_sMission="La mission est impossible avec ce sous marin";
    }
    	return m_sMission;
    }
    int CSousmarin::Retourcouleur(){ // fonction de retour de la couleur utilisé pour le retour mission
     
    	if (m_dTemps <= m_dTempsmax)
    	{	
    		m_icolor1=0;
    		m_icolor2=200;
    		m_icolor3=75;
     
    	}
     
    	else
    	{
    		m_icolor1=200;
    		m_icolor2=0;
    		m_icolor3=0;
    	}
     
    	return m_icolor1;
    	return	m_icolor2;
    	return	m_icolor3;
    }
    int CSousmarin::Retourcouleuraccueil(){
    	if (m_dTemps==0 && m_dPuissance==0 && m_dEnrichissement==0 && m_dStockage==0)
    	{   m_icolora=255;
    		m_icolor1=255;
    		m_icolor2=255;
    		m_icolor3=255;
    		m_icolorb=0;
    	}
    	else
    	{
    		m_icolora=0;
    		m_icolorb=255;
    	}
    	return m_icolora;
    	return m_icolorb;
     
    }
    double CSousmarin::GetPuissance(){
    	return m_dPuissance;
    }
    double CSousmarin::GetEnrichissement(){
    	return m_dEnrichissement;
    }
    double CSousmarin::GetStockage(){
    	return m_dStockage;
    }
    double CSousmarin::GetTemps(){
    	return m_dTemps;
    }
    int CSousmarin::Getcolor1(){
    	return m_icolor1;
    }
    int CSousmarin::Getcolor2(){
    	return m_icolor2;
    }
    int CSousmarin::Getcolor3(){
    	return m_icolor3;
    }
    int CSousmarin::Getcolora(){
    	return m_icolora;
    }
    int CSousmarin::Getcolorb(){
    	return m_icolorb;
    }
     
    BEGIN_MESSAGE_MAP(CSousmarin, CWnd)
    END_MESSAGE_MAP()
     
    CString CSousmarin::Tempsasstr()
    {
    	CString str;
    	str.Format(_T("%.3f"),m_dTemps);
     
    	return str;
    }
    CString CSousmarin::Tempsmaxasstr()
    {
    	CString str;
    	str.Format(_T("%.3f"),m_dTempsmax);
     
    	return str;
    }
    CString CSousmarin::Stockasstr()
    {
    	CString str;
    	str.Format(_T("%.3f"),m_dStockage);
     
    	return str;
    }
    CString CSousmarin::Puissasstr()
    {
    	CString str;
    	str.Format(_T("%.3f"),m_dPuissance);
     
    	return str;
    }
    CString CSousmarin::Enrichasstr()
    {
    	CString str;
    	str.Format(_T("%.3f"),m_dEnrichissement);
     
    	return str;
    }
     
    // Gestionnaires de messages de CSousmarin

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juillet 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 8
    Points : 12
    Points
    12
    Par défaut
    Si le même code marche sur d'autres ordis. Je pense que ça peut être lié au chargement des dll.
    Exécute en Debug pour voir quelles sont les .dll de charger en faisant bien attention à ce qu'il n'y ait pas un "mélange de versions" de DLLs.

    C'est à dire que les dll issue des mêmes apis/libs proviennent bien des mêmes versions. Typiquement pas de mélange entre les redistribuables visual 2010 et 2013.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lyon
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci SaBe94 pour ton aide,

    Voici les .dll chargé

    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
    	TPSSMARIN.exe	F:\Documents\Visual Studio 2010\Projects\TPSSMARIN\Debug\TPSSMARIN.exe	N/A	N/A	Les symboles ont été chargés.	F:\Documents\Visual Studio 2010\Projects\TPSSMARIN\Debug\TPSSMARIN.pdb	1	1.00.0.1	28/04/2015 10:27	00060000-000E3000	[3368] TPSSMARIN.exe: Natif	
    	ntdll.dll	C:\Windows\SysWOW64\ntdll.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wntdll.pdb\E182E2B237094ABDAD81A763BD7498B82\wntdll.pdb	2	6.3.9600.17031 (winblue_gdr.140221-1952)	23/03/2015 00:31	77390000-774FE000	[3368] TPSSMARIN.exe: Natif	
    	kernel32.dll	C:\Windows\SysWOW64\kernel32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wkernel32.pdb\DFB9F6A1661C482C87B4D0D454332CB81\wkernel32.pdb	3	6.3.9600.17031 (winblue_gdr.140221-1952)	29/10/2014 03:58	75690000-757D0000	[3368] TPSSMARIN.exe: Natif	
    	KernelBase.dll	C:\Windows\SysWOW64\KernelBase.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wkernelbase.pdb\DBE05AACA1E64947B24FC7FEB4E264532\wkernelbase.pdb	4	6.3.9600.17238 (winblue_gdr.140723-2018)	29/10/2014 04:03	753F0000-754C7000	[3368] TPSSMARIN.exe: Natif	
    	mfc100ud.dll	C:\Windows\SysWOW64\mfc100ud.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\mfc100ud.i386.pdb\0054624F8D0E47F2AA6DF075EBBAFB1117\mfc100ud.i386.pdb	5	10.00.40219.01	19/02/2011 04:22	53ED0000-545A3000	[3368] TPSSMARIN.exe: Natif	
    	msvcr100d.dll	C:\Windows\SysWOW64\msvcr100d.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\msvcr100d.i386.pdb\9CF06FEE2BF04A2C8C8EFAFB627A3F421\msvcr100d.i386.pdb	6	10.00.40219.1	19/02/2011 02:18	54A40000-54BB3000	[3368] TPSSMARIN.exe: Natif	
    	user32.dll	C:\Windows\SysWOW64\user32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wuser32.pdb\FBAAE417246B4E84AE5BCEC86A73FC642\wuser32.pdb	7	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:04	758E0000-75A33000	[3368] TPSSMARIN.exe: Natif	
    	gdi32.dll	C:\Windows\SysWOW64\gdi32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wgdi32.pdb\10EECB1FC98E4CE1A07CBACA187488662\wgdi32.pdb	8	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:10	757D0000-758DE000	[3368] TPSSMARIN.exe: Natif	
    	comctl32.dll	C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.9600.17415_none_a9ed7f470139b3c1\comctl32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\comctl32.pdb\F7E390EAE6204769BBB91532CA7CB1DF2\comctl32.pdb	9	6.10 (winblue_rtm.130821-1623)	29/10/2014 04:02	6FDF0000-6FFF6000	[3368] TPSSMARIN.exe: Natif	
    	oleaut32.dll	C:\Windows\SysWOW64\oleaut32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\oleaut32.pdb\AB2D635EE22541D094BEB9153DEA45192\oleaut32.pdb	10	6.03.9600.17560	19/12/2014 06:49	75260000-752F5000	[3368] TPSSMARIN.exe: Natif	
    	advapi32.dll	C:\Windows\SysWOW64\advapi32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\advapi32.pdb\917BB4873D014392B99999AA0371B1B22\advapi32.pdb	11	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:57	75B80000-75BFC000	[3368] TPSSMARIN.exe: Natif	
    	shlwapi.dll	C:\Windows\SysWOW64\shlwapi.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\shlwapi.pdb\68EC2A424E5242C2A309E194E68B56CB2\shlwapi.pdb	12	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:43	74C10000-74C55000	[3368] TPSSMARIN.exe: Natif	
    	msimg32.dll	C:\Windows\SysWOW64\msimg32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\msimg32.pdb\BE5BA4D0B49947AA957345F2A9DBE09A2\msimg32.pdb	13	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:05	6FD80000-6FD86000	[3368] TPSSMARIN.exe: Natif	
    	msvcrt.dll	C:\Windows\SysWOW64\msvcrt.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\msvcrt.pdb\D4416A97D40C497AAA487F2B1835A1422\msvcrt.pdb	14	7.0.9600.17415 (winblue_r4.141028-1500)	29/10/2014 04:04	74F70000-75033000	[3368] TPSSMARIN.exe: Natif	
    	combase.dll	C:\Windows\SysWOW64\combase.dll	N/A	N/A	Les symboles ont été chargés.	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\combase.pdb\B9684E7A2A1E43DCB0F9A0A9717CB1AB2\combase.pdb	15	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:06	74DF0000-74F6D000	[3368] TPSSMARIN.exe: Natif	
    	rpcrt4.dll	C:\Windows\SysWOW64\rpcrt4.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wrpcrt4.pdb\C165E9FC4B1D421CBC740A59544C56B62\wrpcrt4.pdb	16	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:07	75330000-753EA000	[3368] TPSSMARIN.exe: Natif	
    	sechost.dll	C:\Windows\SysWOW64\sechost.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\sechost.pdb\F28ED1EB82E744D3B999E441A6B3EF432\sechost.pdb	17	6.3.9600.16384 (winblue_rtm.130821-1623)	20/03/2015 05:20	75040000-75081000	[3368] TPSSMARIN.exe: Natif	
    	sspicli.dll	C:\Windows\SysWOW64\sspicli.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wsspicli.pdb\849B8E8D67774A859ED4435F558189111\wsspicli.pdb	18	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:06	74B90000-74BAE000	[3368] TPSSMARIN.exe: Natif	
    	cryptbase.dll	C:\Windows\SysWOW64\cryptbase.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\cryptbase.pdb\965B22DD4CAE4F698EF8939960BE657C2\cryptbase.pdb	19	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 04:01	74B80000-74B8A000	[3368] TPSSMARIN.exe: Natif	
    	bcryptprimitives.dll	C:\Windows\SysWOW64\bcryptprimitives.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\bcryptprimitives.pdb\46CB28D46F7E4FD485DF196C07CC27EE2\bcryptprimitives.pdb	20	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:05	74B20000-74B74000	[3368] TPSSMARIN.exe: Natif	
    	imm32.dll	C:\Windows\SysWOW64\imm32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wimm32.pdb\57D0ACFA22754450BB9660DA8818F3622\wimm32.pdb	21	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:59	75300000-75327000	[3368] TPSSMARIN.exe: Natif	
    	msctf.dll	C:\Windows\SysWOW64\msctf.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\msctf.pdb\7E83843868234F45B491C219CC6A00032\msctf.pdb	22	6.3.9600.16384 (winblue_rtm.130821-1623)	14/03/2015 02:53	75140000-75252000	[3368] TPSSMARIN.exe: Natif	
    	uxtheme.dll	C:\Windows\SysWOW64\uxtheme.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\wUxTheme.pdb\AB2FF8F5FF0042CA95ABF8212A39AB302\wUxTheme.pdb	23	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:48	70290000-7037D000	[3368] TPSSMARIN.exe: Natif	
    	dwmapi.dll	C:\Windows\SysWOW64\dwmapi.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\dwmapi.pdb\60670C1EC9C44D20B99C8E6E83D24E4C2\dwmapi.pdb	24	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:58	70060000-7007A000	[3368] TPSSMARIN.exe: Natif	
    	mfc100fra.dll	C:\Windows\SysWOW64\mfc100fra.dll	N/A	N/A	Le fichier binaire n'a pas été généré avec les informations de débogage.		25	10.00.40219.325	11/06/2011 05:26	686D0000-686E0000	[3368] TPSSMARIN.exe: Natif	
    	shell32.dll	C:\Windows\SysWOW64\shell32.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\shell32.pdb\67AA8B23A31443A78746A9E692E73AE92\shell32.pdb	26	6.3.9600.17031 (winblue_gdr.140221-1952)	12/02/2015 05:51	76010000-772BC000	[3368] TPSSMARIN.exe: Natif	
    	SHCore.dll	C:\Windows\SysWOW64\SHCore.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\shcore.pdb\AB29E1ED4D524FED828E421AE8673DD72\shcore.pdb	27	6.3.9600.16384 (winblue_rtm.130821-1623)	23/01/2015 04:47	70AB0000-70B3B000	[3368] TPSSMARIN.exe: Natif	
    	ole32.dll	C:\Windows\SysWOW64\ole32.dll	N/A	N/A	Les symboles ont été chargés.	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\ole32.pdb\AC20E2AEC578406AA90F1970160EDFFC2\ole32.pdb	28	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:47	75C20000-75D48000	[3368] TPSSMARIN.exe: Natif	
    	kernel.appcore.dll	C:\Windows\SysWOW64\kernel.appcore.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\Kernel.Appcore.pdb\9FDD5E16955248D0AAF693BD83D5A7851\Kernel.Appcore.pdb	29	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:04	74460000-74469000	[3368] TPSSMARIN.exe: Natif	
    	cryptsp.dll	C:\Windows\SysWOW64\cryptsp.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\cryptsp.pdb\12A0D34A216D4605B5031EC9CCE381D42\cryptsp.pdb	30	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:06	71BE0000-71BF9000	[3368] TPSSMARIN.exe: Natif	
    	rsaenh.dll	C:\Windows\SysWOW64\rsaenh.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\rsaenh.pdb\2866A6CE0121437D8628FFD8E2225D682\rsaenh.pdb	31	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:06	71BB0000-71BE0000	[3368] TPSSMARIN.exe: Natif	
    	bcrypt.dll	C:\Windows\SysWOW64\bcrypt.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\bcrypt.pdb\F2D36EE24F934FCD82ED0ADA83E89A5C1\bcrypt.pdb	32	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 03:05	71B90000-71BAE000	[3368] TPSSMARIN.exe: Natif	
    	BtMmHook.dll	C:\Program Files\WIDCOMM\Bluetooth Software\syswow64\BtMmHook.dll	N/A	N/A	Cannot find or open the PDB file		33	12.00.0.8070	25/10/2013 19:47	57450000-57487000	[3368] TPSSMARIN.exe: Natif	
    	psapi.dll	C:\Windows\SysWOW64\psapi.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\psapi.pdb\F88219992C7646718A6425D0FC65CC642\psapi.pdb	34	6.3.9600.17415 (winblue_r4.141028-1500)	29/10/2014 03:06	76000000-76006000	[3368] TPSSMARIN.exe: Natif	
    	clbcatq.dll	C:\Windows\SysWOW64\clbcatq.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\CLBCatQ.pdb\B5BC85FFA57446759326A6D3D9889DA22\CLBCatQ.pdb	35	2001.12.10530.17415 (winblue_r4.141028-1500)	29/10/2014 02:44	75F70000-75FFD000	[3368] TPSSMARIN.exe: Natif	
    	ExplorerFrame.dll	C:\Windows\SysWOW64\ExplorerFrame.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\ExplorerFrame.pdb\78EB3240C13C4BD8986B2B49394A508D2\ExplorerFrame.pdb	36	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 04:09	62840000-62AD8000	[3368] TPSSMARIN.exe: Natif	
    	duser.dll	C:\Windows\SysWOW64\duser.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\DUser.pdb\EDE5D6FECA7F4F128809BBB467C8551C2\DUser.pdb	37	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:51	627C0000-6283F000	[3368] TPSSMARIN.exe: Natif	
    	dui70.dll	C:\Windows\SysWOW64\dui70.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\DUI70.pdb\A6B5BFD065564F2BB2BDD39F7DAA2A682\DUI70.pdb	38	6.3.9600.16384 (winblue_rtm.130821-1623)	29/10/2014 02:52	62650000-627B9000	[3368] TPSSMARIN.exe: Natif	
    	propsys.dll	C:\Windows\SysWOW64\propsys.dll	N/A	N/A	Symboles chargés (informations sources supprimées).	C:\Users\Brendan\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\propsys.pdb\4B81AA7029904FB9B20D470E0C23D8262\propsys.pdb	39	7.00.9600.17031 (winblue_gdr.140221-1952)	29/10/2014 04:02	70150000-7028A000	[3368] TPSSMARIN.exe: Natif

  6. #6
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Bonjour Brendan29,


    Le fait que çà marche sur certains ordi et pas sur d'autres n'est qu'un coup de (mal)chance. Tu dois avoir un pointeur pas initialisé quelque part. Essaie de lancer le programme dans le débugger et affiche la stack quand il plante. Tu sauras quelle fonction est en cause.

    Le code que tu as posté n'est pas suffisant. Sans les définitions de classe, et sans le code qui utilise ces classes (en particulier leur création/destruction) on aura du mal à comprendre ce qui se passe.

    Ceci étant, Visual Studio a l'air de te guider quant à la construction des classes. Mais on ne peut pas dire qu'il génère un beau code.


    Cordialement

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Utilise le debugger de Visual. Voir la Stack Trace lorsque ça plante est une mine d'information.

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Bonjour à tous.
    Dans le fichier .cpp du contenant la définition des fonctions de la classe CTPSSMARINDoc le pointeur m_pSousmarin est utilisé à plusieurs reprises sans avoir été initialisé.
    Voir cette fonction par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void CTPSSMARINDoc::OnDefinirSousmarin()

  9. #9
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    L'auteur n'a pas utilisé les listes d'initialisation du constructeur et on peut le louper. Mais il est bien initialisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CTPSSMARINDoc::CTPSSMARINDoc()
    {
    	// TODO: ajoutez ici le code d'une construction unique
    	m_pSousmarin=NULL;
    }
    On faisait comme ça dans les anciennes version de C++ et j'ai l'impression que l'éditeur de VC++ est resté bloqué à cette période lointaine.

    On a plus que jamais besoin des fichiers d'en tête pour savoir ce qui existe d'autre dans ces classes.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Lyon
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci à tous de votre aide,

    Désolé de ne pas avoir répondu plus tôt, voici les .h:

    Tout d'abord la classe CSousmarin
    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
    #pragma once
     
     
    // CSousmarin
     
    class CSousmarin : public CWnd
    {
    	DECLARE_DYNAMIC(CSousmarin)
     
    public:
    	CSousmarin();
    	virtual ~CSousmarin();
    	CSousmarin(double Puissance,double Enrichissement,double Stockage,double Temps);
    	double Consommation();
    	double Tempsmax();
    	CString Retourmission();
    	CString Tempsasstr();
    	CString Tempsmaxasstr();
    	CString Stockasstr();
    	CString Puissasstr();
    	CString Enrichasstr();
    	int Retourcouleur();
    	int Retourcouleuraccueil();
    protected:
    	DECLARE_MESSAGE_MAP()
    	double m_dPuissance;
    	double m_dEnrichissement;
    	double m_dStockage;
    	double m_dTemps;
    	double m_dTempsmax;
    	double m_dConsommation;
    	int m_icolor1;
    	int m_icolor2;
    	int m_icolor3;
    	int m_icolora;
    	int m_icolorb;
     
    public:
    	double GetPuissance();
    	double GetEnrichissement();
    	double GetStockage();
    	double GetTemps();
    	int Getcolor1();
    	int Getcolor2();
    	int Getcolor3();
    	int Getcolora();
    	int Getcolorb();
     
     
    };
    Puis la vue:
    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
     
    // TPSSMARINView.h : interface de la classe CTPSSMARINView
    //
     
    #pragma once
     
     
    class CTPSSMARINView : public CView
    {
    protected: // création à partir de la sérialisation uniquement
    	CTPSSMARINView();
    	DECLARE_DYNCREATE(CTPSSMARINView)
     
    // Attributs
    public:
    	CTPSSMARINDoc* GetDocument() const;
     
    // Opérations
    public:
     
    // Substitutions
    public:
    	virtual void OnDraw(CDC* pDC);  // substitué pour dessiner cette vue
    	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
    protected:
    	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
    	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
    	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
     
    // Implémentation
    public:
    	virtual ~CTPSSMARINView();
    #ifdef _DEBUG
    	virtual void AssertValid() const;
    	virtual void Dump(CDumpContext& dc) const;
    #endif
     
    protected:
     
    // Fonctions générées de la table des messages
    protected:
    	afx_msg void OnFilePrintPreview();
    	afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
    	afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
    	DECLARE_MESSAGE_MAP()
    };
     
    #ifndef _DEBUG  // version debug dans TPSSMARINView.cpp
    inline CTPSSMARINDoc* CTPSSMARINView::GetDocument() const
       { return reinterpret_cast<CTPSSMARINDoc*>(m_pDocument); }
    #endif
    le doc:
    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
     
    // TPSSMARINDoc.h : interface de la classe CTPSSMARINDoc
    //
    #include "Sousmarin.h"
    #include "Ssmarindlg.h"
     
    #pragma once
     
     
    class CTPSSMARINDoc : public CDocument
    {
    protected: // création à partir de la sérialisation uniquement
    	CTPSSMARINDoc();
    	DECLARE_DYNCREATE(CTPSSMARINDoc)
    	CSousmarin* m_pSousmarin;
    // Attributs
    public:
    CSousmarin* getSousmarin();
    // Opérations
    public:
     
    // Substitutions
    public:
    	virtual BOOL OnNewDocument();
    	virtual void Serialize(CArchive& ar);
    #ifdef SHARED_HANDLERS
    	virtual void InitializeSearchContent();
    	virtual void OnDrawThumbnail(CDC& dc, LPRECT lprcBounds);
    #endif // SHARED_HANDLERS
     
    // Implémentation
    public:
    	virtual ~CTPSSMARINDoc();
    #ifdef _DEBUG
    	virtual void AssertValid() const;
    	virtual void Dump(CDumpContext& dc) const;
    #endif
     
    protected:
     
    // Fonctions générées de la table des messages
    protected:
    	DECLARE_MESSAGE_MAP()
     
    #ifdef SHARED_HANDLERS
    	// Fonction d'assistance qui définit le contenu de recherche pour un gestionnaire de recherche
    	void SetSearchContent(const CString& value);
    #endif // SHARED_HANDLERS
    public:
    	virtual void DeleteContents();
    	afx_msg void OnDefinirSousmarin();
    };
    et je vous met aussi celui de la classe relié à la boite de dialogue:
    le .h:
    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
    #pragma once
     
     
    // Boîte de dialogue CSsmarindlg
     
    class CSsmarindlg : public CDialogEx
    {
    	DECLARE_DYNAMIC(CSsmarindlg)
     
    public:
    	CSsmarindlg(CWnd* pParent = NULL);   // constructeur standard
    	virtual ~CSsmarindlg();
     
    // Données de boîte de dialogue
    	enum { IDD = IDD_DIALOG1 };
     
    protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // Prise en charge de DDX/DDV
     
    	DECLARE_MESSAGE_MAP()
    public:
    	double m_dEnrichdlg;
    	double m_dPuissdlg;
    	double m_dStockdlg;
    	double m_dTempsdlg;
    };
    et le .cpp
    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
    // Ssmarindlg.cpp*: fichier d'implémentation
    //
     
    #include "stdafx.h"
    #include "TPSSMARIN.h"
    #include "Ssmarindlg.h"
    #include "afxdialogex.h"
     
     
    // Boîte de dialogue CSsmarindlg
     
    IMPLEMENT_DYNAMIC(CSsmarindlg, CDialogEx)
     
    CSsmarindlg::CSsmarindlg(CWnd* pParent /*=NULL*/)
    	: CDialogEx(CSsmarindlg::IDD, pParent)
    {
     
    	m_dEnrichdlg = 0.0;
    	m_dPuissdlg = 0.0;
    	m_dStockdlg = 0.0;
    	m_dTempsdlg = 0.0;
    }
     
    CSsmarindlg::~CSsmarindlg()
    {
    }
     
    void CSsmarindlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialogEx::DoDataExchange(pDX);
    	DDX_Text(pDX, IDC_Enrichissement, m_dEnrichdlg);
    	DDX_Text(pDX, IDC_Puissance, m_dPuissdlg);
    	DDX_Text(pDX, IDC_Stockage, m_dStockdlg);
    	DDX_Text(pDX, IDC_Temps, m_dTempsdlg);
    }
     
     
    BEGIN_MESSAGE_MAP(CSsmarindlg, CDialogEx)
    END_MESSAGE_MAP()
     
     
    // Gestionnaires de messages de CSsmarindlg

  11. #11
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Dans ta classe CTPSSMARINDoc, tu as un pointeur mais tu n'as pas de constructeur de copie ni d'opérateur de conversion. Si pour une raison quelconque tu construits une copie automatique de ton objet tu vas avoir une erreur :
    - Ta copie est créée en utilisant le constructeur de copie automatique, qui fait une copie bit à bit de ton objet y compris le pointeur.
    - Ta copie est utilisée
    - Ta copie est détruite en utilisant le destructeur. Au passage, l'objet pointé est detruit.

    A la fin de cette séquence, tu as donc ton objet de départ qui a maintenant son pointeur qui pointe sur une zone de mémoire invalide mais qui n'est pas sur null (c'est un autre objet qui l'as effacé, pas lui). Tu as trois solutions pour compenser cela :
    - définir et implémenter les constructeur et opérateur d'affectation de copie
    - définir les constructeur et opérateur d'affectation de copie en private (ce qui empêchera le compilateur de faire des copies des objets).
    - utiliser des shared_ptr au lieu de pointeurs nus.

    PS: ce n'est pas parce que toi tu ne fais pas de copie de tes objets, que le compilateur n'en créera pas. Il suffit de passer ton objet par valeur à une fonction pour créer cette copie.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Lyon
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lyon

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide, au final j'ai fini par formater mon pc pour installer windows 7, ce qui à complètement réglé le problème.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2014, 09h39
  2. Réponses: 6
    Dernier message: 14/08/2013, 11h57
  3. Réponses: 2
    Dernier message: 09/11/2010, 21h51
  4. Réponses: 5
    Dernier message: 01/12/2009, 01h06
  5. Réponses: 7
    Dernier message: 13/08/2009, 09h01

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