Bonjour,
J'ai un programme de gestion de systeme de detection et de camera

Voila ayant ajoute a mon programme d'autres options (une deuxieme camera) j'ai du changer certaines choses notament le passage de donnees par l'intermediaire d'une struct (car sinon je devais me lancer dans des conversion de types au niveau des retours de types et ca devenait complique si j'ai d'autres passages etc..)
Maintenant j'ai un code plus propre pour passer mes valeurs.

J'ai dans un premier temps changé le retour de Init() en FSRteVal .
Apres cela j'ai pu avoir les affichages que je voulais sur l'ecran, c'était parfait mais je n'arrivais pas a dire
de quel camera il venait et donc dans un deuxième temps j'ai utilisé un struct pour renvoyer à la fois l'erreur (en type FSRteVal) et la camera correspondant (en type booleen) .

Mais avec struct j'ai quelques erreurs de compilations;
-C2146
-C4430
-C4183
-C2556

Remarque j'ai ces memes erreurs repetees une quinzaine de fois?

Et ces erreurs pointent en partie sur le prototype de ma fonction isProblemeStereo() au niveau du header comme ce qui suit:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
....
float GetQuality(int iImage);
sNoprob isProblemeStereo();   // messages d'erreurs pointe a cette ligne
bool isProblemeTraitement();
bool isProblemeAcquisition();
....


Definition de mon struct :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 
typedefstruct sNoprob
{
bool bster;
FSRetVal FStmpint;
int inut;
}sNoprob;

Le retour de ma fonction IsProblem() a changé egalement:

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

sNoprob CMy99090Doc::isProblemeStereo()    
{
  
  sNoprob inter; 
inter.FStmpint = FS_SUCCESS;            

 if(m_pThreadStereo1->m_initstereostatus==FS_SUCCESS && m_pThreadStereo2->m_initstereostatus==FS_SUCCESS)  
  return inter;            
    if (m_pThreadStereo1->m_initstereostatus!=FS_SUCCESS || m_pThreadStereo2->m_initstereostatus!=FS_SUCCESS)
       
  if (m_pThreadStereo1)
        { if (m_pThreadStereo1->isProbleme())
             inter.bster = 0;
             inter.FStmpint = m_pThreadStereo1->m_initstereostatus ;
        }
  else if (m_pThreadStereo2) 
       { if (m_pThreadStereo2->isProbleme())
             inter.bster = 1;
              inter.FStmpint = m_pThreadStereo2->m_initstereostatus ;
        }
       
    return inter;
}

Voici ma fonction OntImer pour l'affichage sur l'ecran des messages d'erreurs d'initialisations:

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
 
 
.........
 
  if(m_Init.Get_Params_General_ModeProcess ()==PROCESS_SAS_AUTOMATIQUE)
  {
     if(uiSecurity& LEVEL_1)
   {   
    //CStereo m_bvercam;               
    sNoprob initstereostatus=pDoc->isProblemeStereo();  
     if(initstereostatus.FStmpint)    
      m_ListeStereo.ResetContent ();   
     else
      m_bPblStereo=false;
    if (initstereostatus.bster)
                 {switch(initstereostatus.FStmpint) 
      {
 
                  case FS_ERROR_LOW_MEMORY:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
          m_ListeStereo.AddString (strDatalist);
        break;
 
      case FS_ERROR_CANNOT_OPEN_FILE:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
        break;
 
                  case FS_ERROR_BAD_CONFIG_FORMAT:  
 
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
break;
 
      case FS_ERROR_BAD_PARAMETER_IN_CONFIG_FILE:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_BAD_PARAMETER:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_CANNOT_CREATE_PROCESS:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_COMMUNICATION_LOST:  
 
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
               break;
 
                  case FS_ERROR_DISK_FULL:  
                                m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
           break;
 
                  case FS_ERROR_CANNOT_EXECUTE: 
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_UNKNOWN:  
 
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
           break;
 
                  case FS_ERROR_CAMERA_NOT_FOUND:  
 
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_NUMBER:  
 
          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 1  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
      }
     }
      else 
        {   
     switch(initstereostatus.FStmpint)
 
      {
                  case FS_ERROR_LOW_MEMORY:  
 
           m_bPblStereo=true;
        strDatalist.Format ("Explication Stereo 2 %s", FSRetVal_Names[initstereostatus.FStmpint]);
        m_ListeStereo.AddString (strDatalist);
        break;
 
      case FS_ERROR_CANNOT_OPEN_FILE:  
 
                          m_bPblStereo=true;
        strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
        m_ListeStereo.AddString (strDatalist);
        break;
 
                  case FS_ERROR_BAD_CONFIG_FORMAT:  
            m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
      case FS_ERROR_BAD_PARAMETER_IN_CONFIG_FILE:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_BAD_PARAMETER:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_CANNOT_CREATE_PROCESS:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_COMMUNICATION_LOST:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_DISK_FULL:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_CANNOT_EXECUTE:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_UNKNOWN:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_CAMERA_NOT_FOUND:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
                  case FS_ERROR_NUMBER:  
                          m_bPblStereo=true;
         strDatalist.Format ("Explication Stereo 2  %s", FSRetVal_Names[initstereostatus.FStmpint]);
         m_ListeStereo.AddString (strDatalist);
         break;
 
      }
      }
     if(pDoc->isIniteStereo())
     m_bStereo=true;
        else
     m_bStereo=false;
   }
   else
   {
    m_bPblStereo=false;
    m_bStereo=true;
   }
 
   if(pDoc->isProblemeModbus())
    m_bPblModbus=true;
   else
    m_bPblModbus=false;
 
   if(pDoc->isInitModbus())
    m_bModbus=true;
   else
    m_bModbus=false;
  } 
  UpdateData(false);
 
.........
}
Je pensais que l'erreur venait de %s dans l'instruction : strDatalist.Format ("Explication Stereo 2 %s", FSRetVal_Names[initstereostatus.FStmpint]);

mais en remplaçant ca par ceci rien n'a changé : strDatalist.Format ( Explication Stereo 2 : FS_ERROR_CAMERA_NOT_FOUND);

D'ou peut venir les erreurs ?

Merci