Unhandled exception in abc.exe (MFC42.DLL):0xC.. Access Violation
I Microsoft Visual C++ (Version 6.0), har jeg følgende kodeblok:>>>>>>>>>>>>>>>
void Connection::WaitPassword()
{
CString deb;
if (m_bTimeout) {
if (OkToRetry()) {
SendPassword();
}
else {
m_eInState = i_S_CLOSE_CALL;
m_pDBGeneral->Log(m_strT_ID, 615, "COM port "+CString(CICString(m_nComPortNo))+" State: "+CString(CICString(m_eInState)), "system");
}
}
tagDataResult messageResult=IsMessageComplete(*m_pInBuffer);
if (messageResult==data_OK) {
BYTE ans=(*m_pInBuffer)[5];
switch (ans) {
case 0x03: // Password accepted
{
CString MSID=CString((char*)m_pInBuffer->GetData()+6,6);
deb.Format("MSID = %s",MSID);
debug(deb);
// Opret DbConnection link
if (m_pDBConn==NULL) {
debug("Creating DBConnection.");
m_pDBConn = new DBConnection;
int res = m_pDBConn->Open(m_strT_ID,m_strLogin,m_strPassword);
if (res==0) {
debug("Error connecting to database");
}
}
else {
debug("Connection not NULL. Destroying and creating new.");
m_pDBConn->Close();
delete m_pDBConn;
m_pDBConn = new DBConnection;
m_pDBConn->Open(m_strT_ID,m_strLogin,m_strPassword);
}
m_pDBGeneral->GetControlData(m_strT_ID,m_ControlData);
// Check Device_type
int Device_type = m_pDBGeneral->GetDeviceType(m_strT_ID, m_strTlfReserved, m_nMakroNo);
deb.Format("Device type = %d",Device_type);
debug(deb);
*m_pInBuffer = CSArray();
m_eInState = i_S_GET_DATA_FROM_TIME;
}
break;
case 0x04: // Det modtagne password eksisterer ikke
{
deb.Format("%s",m_pInBuffer->gethex());
debug(deb);
debug("Password dont exist");
// Log an error to log
m_pDBGeneral->Log(m_strT_ID, 631, "Password dont exist", "system");
*m_pInBuffer = CSArray();
m_eInState = i_S_END_SESSION;
}
break;
case 0x05: // Det modtagne password ved login, giver ikke ret til at udføre den ønskede kommando.
{
deb.Format("%s",m_pInBuffer->gethex());
debug(deb);
debug("Insufficient access to set time");
// Log an error to log
m_pDBGeneral->Log(m_strT_ID, 632, "Password: Insufficient access to set time", "system");
*m_pInBuffer = CSArray();
m_eInState = i_S_ END_SESSION;
}
break;
case 0x02: // Command not understood
{
if (OkToRetry()) {
*m_pInBuffer = CSArray();
SendPassword();
}
else {
*m_pInBuffer = CSArray();
m_eInState = i_S_CLOSE_CALL;
}
}
break;
default:
{
deb.Format("%s",m_pInBuffer->gethex());
debug(deb);
deb.Format(" Resp not understood %d. Exp [03] or [04] or [02]",ans);
debug(deb);
*m_pInBuffer = CSArray();
m_eInState = i_S_CLOSE_CALL;
}
break;
}
}
if (messageResult==data_CRCError) {
if (OkToRetry()) {
SendRepeat();
*m_pInBuffer = CSArray();
}
else {
*m_pInBuffer = CSArray();
m_eInState = i_S_CLOSE_CALL;
}
}
}
<<<<<<<<<<<<<<<<<
Hvis det modtagne password IKKE eksisterer kører mit program lidt videre herfra, men dør med fejlen: "Unhandled exception in abc.exe (MFC42.DLL):0xC0000005 Access Violation" i en ef de efterfølgende kodeblokke.
Hvis det modtagne password eksisterer kører programmet fint videre herfra, i nøjagtigt de samme kodeblokke.
Hvad kan jeg gøre for at finde fejlen og rette den, eller håndterer den fejl der opstår ?
Venlig hilsen og på forhånd tak for hjælpen
Jannik