Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 11:01
Оценка:
Visual C++ 6.0

Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?


void CComDlg::OnDestroy() 
{
    delete[] pbLife;
    delete[] temppbLife;
    m_life = FALSE;

    CDialog::OnDestroy();
    KillTimer(m_uTimerID);
}
Re: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 11:05
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Visual C++ 6.0


R>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?

Что за эксепшон и в каком месте то? GPF небось...
Re: Помогите обнаружить ошибку...
От: Silent_Sky Россия http://www.rsdn.ru/tools/member.aspx?id=
Дата: 04.07.03 11:11
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Visual C++ 6.0


R>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?



R>
R>void CComDlg::OnDestroy() 
R>{
R>    delete[] pbLife;
R>    delete[] temppbLife;
R>    m_life = FALSE;

R>    CDialog::OnDestroy();
R>    KillTimer(m_uTimerID);
R>}
R>



KillTimer(m_uTimerID);

поставь перед CDialog::OnDestroy();
толку никакого но все равно
if( pbLife != NULL ) delete[] pbLife;
if( temppbLife != NULL )  delete[] temppbLife;
Когда-нибудь и я буду много знать, но пока это не грозит...
ICQ #134433
Re[2]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 11:19
Оценка:
Здравствуйте, Федько Олег, Вы писали:

ФО>Здравствуйте, Repdiablo, Вы писали:


R>>Visual C++ 6.0


R>>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?

ФО>Что за эксепшон и в каком месте то? GPF небось...

А как это узнать??
Re[3]: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 11:26
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Здравствуйте, Федько Олег, Вы писали:


ФО>>Здравствуйте, Repdiablo, Вы писали:


R>>>Visual C++ 6.0


R>>>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?

ФО>>Что за эксепшон и в каком месте то? GPF небось...

R>А как это узнать??


Если пишет the memory could not be "written" — это GPF
В любом случай жми Cancel и попробуй отладить программу.
Попадёшь в то место где произошло исключение.
Если исключение произошло не в твоей программе, то по стеку вызовов можешь
определить в какой функции это произошло.
Re[4]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 11:40
Оценка:
Здравствуйте, Федько Олег, Вы писали:

ФО>Здравствуйте, Repdiablo, Вы писали:


R>>Здравствуйте, Федько Олег, Вы писали:


ФО>>>Здравствуйте, Repdiablo, Вы писали:


R>>>>Visual C++ 6.0


R>>>>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?

ФО>>>Что за эксепшон и в каком месте то? GPF небось...

R>>А как это узнать??


ФО>Если пишет the memory could not be "written" — это GPF

ФО>В любом случай жми Cancel и попробуй отладить программу.
ФО>Попадёшь в то место где произошло исключение.
ФО>Если исключение произошло не в твоей программе, то по стеку вызовов можешь
ФО>определить в какой функции это произошло.

Он мне пишет Unhandled exception in MyApp.exe: 0x0000005 Access violation
И только кнопочка OK
Re: Помогите обнаружить ошибку...
От: Ed.ward Россия  
Дата: 04.07.03 11:48
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Visual C++ 6.0


R>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?



R>
R>void CComDlg::OnDestroy() 
R>{
R>    delete[] pbLife;
R>    delete[] temppbLife;
R>    m_life = FALSE;

R>    CDialog::OnDestroy();
R>    KillTimer(m_uTimerID);
R>}
R>


Признайся, ты в обработке таймера пользуешь переменные pbLife и temppbLife?

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
Re[2]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 11:51
Оценка:
Здравствуйте, Ed.ward, Вы писали:

EW>Здравствуйте, Repdiablo, Вы писали:


R>>Visual C++ 6.0


R>>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?



R>>
R>>void CComDlg::OnDestroy() 
R>>{
R>>    delete[] pbLife;
R>>    delete[] temppbLife;
R>>    m_life = FALSE;

R>>    CDialog::OnDestroy();
R>>    KillTimer(m_uTimerID);
R>>}
R>>


EW>Признайся, ты в обработке таймера пользуешь переменные pbLife и temppbLife?


EW>Ed.ward


Неа, честно честно!!!
Re[5]: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 11:52
Оценка:
R>Он мне пишет Unhandled exception in MyApp.exe: 0x0000005 Access violation
R>И только кнопочка OK
А ты запускаешь из студии? Если у тебя установлен отладчик, то обычно такие
окна имееют ещё и кнопку Cancel, которая озночает "Click on CANCEL to debug the program"

При работе из студии процесс поиска такой:

[msdn]
Problem Description
My program produces an access violation. How can I debug this?

Solution
Use the Call Stack window to work your way back up the call stack, looking for corrupted data being passed as a parameter to a function. If that fails, try setting a breakpoint at a point before the location where the access violation occurs. Check to see if data is good at that point. If so, try stepping your way toward the location where the access violation occurred. If you can identify a single action, such as a menu command that led to the access violation, you can try another technique: set a breakpoint between the action (in this example, the menu command) and the access violation. You can then look at the state of your program during the moments leading up to the access violation.

You can use a combination of these techniques to work forward and backward until you have isolated the location where the access violation occurred. For more information, see Using the Call Stack Window.
[/msdn]
Re[6]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 11:57
Оценка:
Здравствуйте, Федько Олег, Вы писали:

А подскажи пожалуйста ответ не вот такой вопрос?

Visual C++ 6.0

Когда вызываю визард(Ctrl + W), и выбираю свой класс у меня вылетает следующее сообщение:

A duplicate insert block exists for class "MyClass" in the source files

Как с этим бороться????
Re[7]: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 12:05
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Здравствуйте, Федько Олег, Вы писали:


R>А подскажи пожалуйста ответ не вот такой вопрос?


R>Visual C++ 6.0


R>Когда вызываю визард(Ctrl + W), и выбираю свой класс у меня вылетает следующее сообщение:


R>A duplicate insert block exists for class "MyClass" in the source files


R>Как с этим бороться????

Визард от 6-ой студии когда вставляет в исходники свой текст, чтобы знать куда
вставить оставляет такие комментарии:

В .cpp


BEGIN_MESSAGE_MAP(CNavGroupView, CManagedResizableFormView)
    //{{AFX_MSG_MAP(CNavGroupView)
        ....
    ON_NOTIFY(NM_DBLCLK, IDC_NAVGROUPTREE, OnDblclkNavgrouptree)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()

    //{{AFX_DATA_INIT(CNavGroupView)
        ...
    //}}AFX_DATA_INIT


    //{{AFX_DATA_MAP(CNavGroupView)
    DDX_Control(pDX, IDC_GOTOSERVICE, m_btGotoService);
        ...
    //}}AFX_DATA_MAP



В .h

    //{{AFX_DATA(CNavGroupView)
    CTreeCtrl    m_tcNavGroupTree;
        ...
    //}}AFX_DATA
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CNavGroupView)
    virtual void OnInitialUpdate(); // called first time after construct
        ...
    //}}AFX_VIRTUAL



Т.е. вида //{{AFX_...
Ты где-то видать для одного класса копирнул какой-то блок, и визард теперь
не знает куда именно всавлять.

Иногда Визарда начинает глючить, и он начинает гнать всякую чушь.
Тогда советую стереть файл *.clw — это файл с информацией о твоих классах.
Если его не будет Визард его сделает заново.
Re[8]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 12:18
Оценка:
Здравствуйте, Федько Олег, Вы писали:

ФО>Здравствуйте, Repdiablo, Вы писали:


R>>Здравствуйте, Федько Олег, Вы писали:


R>>А подскажи пожалуйста ответ не вот такой вопрос?


R>>Visual C++ 6.0


R>>Когда вызываю визард(Ctrl + W), и выбираю свой класс у меня вылетает следующее сообщение:


R>>A duplicate insert block exists for class "MyClass" in the source files


R>>Как с этим бороться????

ФО>Визард от 6-ой студии когда вставляет в исходники свой текст, чтобы знать куда
ФО>вставить оставляет такие комментарии:

ФО>В .cpp



ФО>
ФО>BEGIN_MESSAGE_MAP(CNavGroupView, CManagedResizableFormView)
ФО>    //{{AFX_MSG_MAP(CNavGroupView)
ФО>        ....
ФО>    ON_NOTIFY(NM_DBLCLK, IDC_NAVGROUPTREE, OnDblclkNavgrouptree)
ФО>    //}}AFX_MSG_MAP
ФО>END_MESSAGE_MAP()

ФО>    //{{AFX_DATA_INIT(CNavGroupView)
ФО>        ...
ФО>    //}}AFX_DATA_INIT


ФО>    //{{AFX_DATA_MAP(CNavGroupView)
ФО>    DDX_Control(pDX, IDC_GOTOSERVICE, m_btGotoService);
ФО>        ...
ФО>    //}}AFX_DATA_MAP
ФО>



ФО>В .h


ФО>
ФО>    //{{AFX_DATA(CNavGroupView)
ФО>    CTreeCtrl    m_tcNavGroupTree;
ФО>        ...
ФО>    //}}AFX_DATA
ФО>    // ClassWizard generated virtual function overrides
ФО>    //{{AFX_VIRTUAL(CNavGroupView)
ФО>    virtual void OnInitialUpdate(); // called first time after construct
ФО>        ...
ФО>    //}}AFX_VIRTUAL
ФО>



ФО>Т.е. вида //{{AFX_...

ФО>Ты где-то видать для одного класса копирнул какой-то блок, и визард теперь
ФО>не знает куда именно всавлять.


Так, а что мне сделать то? Я просто копирнул файлы класса!

ФО>Иногда Визарда начинает глючить, и он начинает гнать всякую чушь.

ФО>Тогда советую стереть файл *.clw — это файл с информацией о твоих классах.
ФО>Если его не будет Визард его сделает заново.

Пробовал не получается
Re[9]: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 12:25
Оценка:
ФО>>Иногда Визарда начинает глючить, и он начинает гнать всякую чушь.
ФО>>Тогда советую стереть файл *.clw — это файл с информацией о твоих классах.
ФО>>Если его не будет Визард его сделает заново.

R>Пробовал не получается

Значит это ты напортачил...

R>Так, а что мне сделать то? Я просто копирнул файлы класса!

Если ты копировал класс, чтобы создать похожий, но с другим именем,
то надо было поменять не только название класса, название конструктора и деструктора,
но и в подобных макросах тоже изменить на соответсвтующее:

    //{{AFX_MSG_MAP(CNavGroupView)
    //{{AFX_DATA_INIT(CNavGroupView)
    //{{AFX_DATA_MAP(CNavGroupView)
    //{{AFX_DATA(CNavGroupView)
    //{{AFX_VIRTUAL(CNavGroupView)
    //{{AFX_...(CNavGroupView)
Re[10]: Помогите обнаружить ошибку...
От: Repdiablo  
Дата: 04.07.03 12:46
Оценка:
Здравствуйте, Федько Олег, Вы писали:

ФО>>>Иногда Визарда начинает глючить, и он начинает гнать всякую чушь.

ФО>>>Тогда советую стереть файл *.clw — это файл с информацией о твоих классах.
ФО>>>Если его не будет Визард его сделает заново.

R>>Пробовал не получается

ФО>Значит это ты напортачил...

R>>Так, а что мне сделать то? Я просто копирнул файлы класса!

ФО>Если ты копировал класс, чтобы создать похожий, но с другим именем,
ФО>то надо было поменять не только название класса, название конструктора и деструктора,
ФО>но и в подобных макросах тоже изменить на соответсвтующее:

ФО>
ФО>    //{{AFX_MSG_MAP(CNavGroupView)
ФО>    //{{AFX_DATA_INIT(CNavGroupView)
ФО>    //{{AFX_DATA_MAP(CNavGroupView)
ФО>    //{{AFX_DATA(CNavGroupView)
ФО>    //{{AFX_VIRTUAL(CNavGroupView)
ФО>    //{{AFX_...(CNavGroupView)
ФО>


Да, я просто файлы копирнул из одного проекта в другой((
Re[11]: Помогите обнаружить ошибку...
От: Федько Олег Россия  
Дата: 04.07.03 12:58
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Да, я просто файлы копирнул из одного проекта в другой((


А в том визард работает?

Может ты включил в проект и те файлы, и скопированные?
Если нет, то убирай функции по одной пока ошибка не исчезнет.


Переходи на VC.NET, там такой проблемы точно нет.
Re[12]: Помогите обнаружить ошибку...
От: Saddam Россия http://saddam.narod.ru
Дата: 05.07.03 07:39
Оценка:
Здравствуйте, Федько Олег, Вы писали:

ФО>Здравствуйте, Repdiablo, Вы писали:


R>>Да, я просто файлы копирнул из одного проекта в другой((


ФО>А в том визард работает?


ФО>Может ты включил в проект и те файлы, и скопированные?

ФО>Если нет, то убирай функции по одной пока ошибка не исчезнет.


ФО>Переходи на VC.NET, там такой проблемы точно нет.

Аха! Но есть куча других
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re: Помогите обнаружить ошибку...
От: Somnus  
Дата: 06.07.03 00:14
Оценка:
Здравствуйте, Repdiablo, Вы писали:

R>Visual C++ 6.0


R>Вылетает эксепшон после того как закрываю диалоговое окно?? С чем это может быть связано?



R>
R>void CComDlg::OnDestroy() 
R>{
R>    delete[] pbLife;
R>    delete[] temppbLife;
R>    m_life = FALSE;

R>    CDialog::OnDestroy();
R>    KillTimer(m_uTimerID);
R>}
R>


почему у тебя строчка >> CDialog::OnDestroy();
расположена раньше чем >> KillTimer(m_uTimerID);

переставь местами, при определённых условиях и это может помоч.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.