Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка Unhandled exception, Access violation reading 
:(
    Опции темы
XSonicX
  Дата 21.2.2011, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 14.7.2006
Где: Таллинн, Edinburg h

Репутация: нет
Всего: 0



Здавствуйте! Ни с того ни ссего сегодня запускаю проект, пытаюсь его прокомпилить. Все проходит удачно, но программа сразу при запуске выдает ошибку 
Цитата

Warning: Destroying non-NULL m_pMainWnd
First-chance exception at 0x00c45379 in determinant.exe: 0xC0000005: Access violation reading location 0xfefeff66.
Unhandled exception at 0x00c45379 in determinant.exe: 0xC0000005: Access violation reading location 0xfefeff66.


Указывает на кусок кода в winmain.cpp
Код

// Perform specific initializations
    if (!pThread->InitInstance())
    {
        if (pThread->m_pMainWnd != NULL)
        {
            TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
            pThread->m_pMainWnd->DestroyWindow(); // На эту строчку
        }
        nReturnCode = pThread->ExitInstance();
        goto InitFailure;
    }
    nReturnCode = pThread->Run();



Программа очень проста. Вот основной код:
Код

void CdeterminantDlg::OnBnClickedButton1()
{
    UpdateData(true);
    int ii=m_tab.GetCurSel();
    if(int_solve==0)
    {
        delta=a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3;
        
        if(ii==0)
        {
            c_delta.ModifyStyle(ES_READONLY, 0,SWP_FRAMECHANGED);
            dx=d1*b2*c3+b1*c2*d3+c1*d2*b3-c1*b2*d3-b1*d2*c3-d1*c2*b3;
            dy=a1*d2*c3+d1*c2*a3+c1*a2*d3-c1*d2*a3-d1*a2*c3-a1*c2*d3;
            dz=a1*b2*d3+b1*d2*a3+d1*a2*b3-d1*b2*a3-b1*a2*d3-a1*d2*b3;
            x=dx/delta;
            y=dy/delta;
            z=dz/delta;
            if (delta,dx,dy,dz==0)
            {
                 MessageBox(_T("System is undefined."),_T("Error"),MB_OK);
            }
            else
            {
                if ((dx==0||dy==0||dz==0)&&delta==0)
                {
                     MessageBox(_T("System is incompatible."),_T("Error"),MB_OK);
                }
            }
        }
    }
    else
    {
        if(ii==1)
        {
            if(delta==(a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3))
            {    
                 MessageBox(_T("Correct answer!"),_T("Congradulations"),MB_OK);
            }
            else
            {
                 MessageBox(_T("Answer is NOT correct! Try again."),_T("Error"),MB_OK);
            }
        }
        int m=0;
        if(ii==0)
        {
            if(delta!=(a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3)) m++;
            if(dx!=(d1*b2*c3+b1*c2*d3+c1*d2*b3-c1*b2*d3-b1*d2*c3-d1*c2*b3)) m++;
            if(dy!=(a1*d2*c3+d1*c2*a3+c1*a2*d3-c1*d2*a3-d1*a2*c3-a1*c2*d3)) m++;
            if(dz!=(a1*b2*d3+b1*d2*a3+d1*a2*b3-d1*b2*a3-b1*a2*d3-a1*d2*b3)) m++;
            //if(x!=(d1*b2*c3+b1*c2*d3+c1*d2*b3-c1*b2*d3-b1*d2*c3-d1*c2*b3)/(a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3))m++;
            //if(y!=(a1*d2*c3+d1*c2*a3+c1*a2*d3-c1*d2*a3-d1*a2*c3-a1*c2*d3)/(a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3))m++;
            //if(z!=(a1*b2*d3+b1*d2*a3+d1*a2*b3-d1*b2*a3-b1*a2*d3-a1*d2*b3)/(a1*b2*c3+b1*c2*a3+c1*a2*b3-c1*b2*a3-b1*a2*c3-a1*c2*b3))m++;
            if(m==0) MessageBox(_T("All answers are correct!"),_T("Congradulations"),MB_OK);
            if(m==1) MessageBox(_T("Answers are NOT correct. You have 1 mistake."),_T("Error"),MB_OK);
            if(m==2) MessageBox(_T("Answers are NOT correct. You have 2 mistakes."),_T("Error"),MB_OK);
            if(m==3) MessageBox(_T("Answers are NOT correct. You have 3 mistakes."),_T("Error"),MB_OK);
            if(m==4) MessageBox(_T("Answers are NOT correct. You have 4 mistakes."),_T("Error"),MB_OK);
            if(m==5) MessageBox(_T("Answers are NOT correct. You have 8 mistakes."),_T("Error"),MB_OK);
            if(m==6) MessageBox(_T("Answers are NOT correct. You have 6 mistakes."),_T("Error"),MB_OK);
            if(m==7) MessageBox(_T("Answers are NOT correct. You have 7 mistakes."),_T("Error"),MB_OK);
        }

    }


    UpdateData(false);
}

void CdeterminantDlg::OnBnClickedButton2()
{
    UpdateData(true);
    delta=0;
    dx=0;
    dy=0;
    dz=0;
    x=0;
    y=0;
    z=0;
    a1=0;
    a2=0;
    a3=0;
    b1=0;
    b2=0;
    b3=0;
    c1=0;
    c2=0;
    c3=0;
    d1=0;
    d2=0;
    d3=0;
    UpdateData(false);
}

void CdeterminantDlg::OnTcnSelchangeTab2(NMHDR *pNMHDR, LRESULT *pResult)
{

    int ii=m_tab.GetCurSel();
    sheet1.ShowWindow(ii==1? SW_SHOW : SW_HIDE);
    sheet2.ShowWindow(ii==1? SW_SHOW : SW_HIDE);

    // TODO: Add your control notification handler code here
    *pResult = 0;
}

void CdeterminantDlg::OnBnClickedRadio2()
{
    int_solve=1;
        c_dx.SetReadOnly(false);
        c_dy.SetReadOnly(false);
        c_dz.SetReadOnly(false);
        c_x.SetReadOnly(false);
        c_y.SetReadOnly(false);
        c_z.SetReadOnly(false);
        c_delta.SetReadOnly(false);
    UpdateData(false);
    // TODO: Add your control notification handler code here
}

void CdeterminantDlg::OnBnClickedRadio1()
{    
    int_solve=0;
        c_dx.SetReadOnly(true);
        c_dy.SetReadOnly(true);
        c_dz.SetReadOnly(true);
        c_x.SetReadOnly(true);
        c_y.SetReadOnly(true);
        c_z.SetReadOnly(true);
        c_delta.SetReadOnly(true);
    UpdateData(false);
    // TODO: Add your control notification handler code here
}



Пытался убирать все внутринности кнопок в комменты с помощью /*...*/  но в итоге ничего не изменилось. smile 
Помогите пожалуйста.  
PM WWW Skype   Вверх
Cheloveck
Дата 21.2.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: нет
Всего: 32



XSonicX, в InitInstance класса приложения нужно присвоить указателю m_pMainWnd указатель на твоё главное окно. Ты это сделал?


--------------------
user posted image
PM Jabber   Вверх
XSonicX
Дата 21.2.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 14.7.2006
Где: Таллинн, Edinburg h

Репутация: нет
Всего: 0



Cheloveck, я ничего такого вообще не делал! В том то и дело как бы у меня все работало замечательно до определенного момента.. И т.к это случилось "само по себе" я не знаю в чем моя вина или ошибка..  Как мне посмотреть 
Цитата

в InitInstance класса приложения нужно присвоить указателю m_pMainWnd указатель на твоё главное окно

 Сделал ли я это или нет?
PM WWW Skype   Вверх
Earnest
Дата 21.2.2011, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



XSonicX, кто тебе мешает поставить точку прерывания на InitInstance и посмотреть, почему возвращается false? Ты ведь написал "сразу при запуске", так что проблема явно в этом: почему-то не хочет твой объект-приложение инициализироваться.

Добавлено через 2 минуты и 4 секунды
Хотя, InitInstance может возвращать false, если приложение диалоговое. Но тогда никакого ненулевого m_pMainWnd быть не должно.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.