Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка при закрытии программы

92
17 января 2007 года
Тень Пса
2.2K / / 19.10.2006
при закрытии программы, выпадает ошибка

Цитата:
The instruction at "0x77f88216" referenced memory at "0x00000010". The memory could not be "written".



вот... в чем проблема я понять не могу... ничего "страшного" я перед выходом не делаю...

просто устанавливаю private свойства класса TMainForm в значения по умолчанию, и вызываю функцию Logout на сервере, чтобы пристрелил сессию....

функция Logout завершается; блок try ... catch (...) никаких Exception'ов не выдаёт... в общем, когда уже окно исчезло, тогда вываливается вот этот message

magic какой-то...:confused:

305
17 января 2007 года
Kashuk
385 / / 21.02.2003
Цитата: Тень Пса
при закрытии программы, выпадает ошибка



вот... в чем проблема я понять не могу... ничего "страшного" я перед выходом не делаю...

просто устанавливаю private свойства класса TMainForm в значения по умолчанию, и вызываю функцию Logout на сервере, чтобы пристрелил сессию....

функция Logout завершается; блок try ... catch (...) никаких Exception'ов не выдаёт... в общем, когда уже окно исчезло, тогда вываливается вот этот message

magic какой-то...:confused:



У тебя в проэкте одна форма, или несколько?

92
17 января 2007 года
Тень Пса
2.2K / / 19.10.2006
4 штуки.

PS: под 2k вот такая вот ошибка. а под XP ошибки нет.....
305
17 января 2007 года
Kashuk
385 / / 21.02.2003
А они у тебя правельно закрываются?

Попробуй написать в событиях каждой формы вот такое: (FormClose)
Release();
Form1 = NULL;
92
17 января 2007 года
Тень Пса
2.2K / / 19.10.2006
IMHO, так делать нельзя, ибо если я в ходе работы программы буду закрывать формы, после того как делаю ShowModal, тогда они просто пропадут )))) ну всмысле просто их больше не будет, это же уничтожение формы. :(
305
17 января 2007 года
Kashuk
385 / / 21.02.2003
Цитата: Тень Пса
IMHO, так делать нельзя, ибо если я в ходе работы программы буду закрывать формы, после того как делаю ShowModal, тогда они просто пропадут )))) ну всмысле просто их больше не будет, это же уничтожение формы. :(



А ты их вот так создавай
if(!Form1){
Application->CreateForm(__classid(TForm1), &Form1);
}
Form1->Show(); Или СшовМодал

1
17 января 2007 года
kot_
7.3K / / 20.01.2000
Причем здесь как он их создает?
И зачем извраты с Release()?
Или это как в известном анекдоте:
"- Рабе таки все куры сдохли...
- Жаль а у меня еще столько идей было" :)
Тень Пса
Установи точку останова и пройдись отладчиком перед моментом закрытия формы. Ты увидишь куда собственно передается управление и сможешь найти ошибку.
246
17 января 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Kashuk
А они у тебя правельно закрываются?

Попробуй написать в событиях каждой формы вот такое: (FormClose)
Release();
Form1 = NULL;


Release(); - писать не вздумай. Как создаются формы - динамически? И что передаешь в конструтор (Owner - кто)?

92
17 января 2007 года
Тень Пса
2.2K / / 19.10.2006
спасибо, буду пытаться...

PS: Release писать не стал ))) ибо динамически их потом создавать ))) не хоца ) :rolleyes:
92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
убрал из TMainForm::OnClose() ВСЁ!!!! и всё равно!!! =) ашипко!

не могу словить её... главно: из IDE запускаю, хоть релиз, хоть дебаг... НЭТ АШЫПКО!... а вот EXE-шник, скомпилённый и лежащий рядом.... ЕСТЬ АШЫПКО!

мэджик........ :eek:

а может ли компонент NMHTTP такую пакость делать?

PS: ну вот совсем ничего не делаю при закрытии....
1
18 января 2007 года
kot_
7.3K / / 20.01.2000
Может.
92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
хм... в общем делаю на TMainForm::OnCloseQuery():
 
Код:
...
if (http->Connected()) {
  http->Disconnect();
}

http->Free();
...


а при зыкрытии всё равно вылетает эта мессага....

самое странное то, что вылетает тока под 2хтоннкой... (win2k) и только когда запускаю уже скомпилённый exe-шник... а из IDE или просто exe-шник в XP - всё гут! :(

PS: не делаю никогда http->Connect(); делаю только http->Get(); (насколько знаю сам делает коннект и после возвращения рузельтата дисконнект)...
инициализирую компонент перед Get() методом так
Код:
http->TimeOut = 30000;
    http->InputFileMode = false;
    http->OutputFileMode = false;
    http->ReportLevel = Status_Basic;
    http->HeaderInfo->Cookie = "";
    http->HeaderInfo->LocalMailAddress = "";
    http->HeaderInfo->LocalProgram = "";
    http->HeaderInfo->Referer = "";
    http->HeaderInfo->UserId = "";
    http->HeaderInfo->Password = "";

    // далее просто http->Get(url);


вот...
309
18 января 2007 года
el scorpio
1.1K / / 19.09.2006
Цитата:
http->Free();


Правильнее писать delete http.
Кстати, а что это за объект? Если имя компонента, положенного на форму, то удалять его не нужно - его удалит сама форма.

92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
да, это компонент NMHTTP с влкадки FastNet .... удаляю его для того, чтобы не было проблем с его удалением у формы... думал что может это он "бяку" :) делает... и из-за него и вылетает этот вот йэррор....
1
18 января 2007 года
kot_
7.3K / / 20.01.2000
Цитата: Тень Пса
убрал из TMainForm::OnClose() ВСЁ!!!! и всё равно!!! =) ашипко!

не могу словить её... главно: из IDE запускаю, хоть релиз, хоть дебаг... НЭТ АШЫПКО!... а вот EXE-шник, скомпилённый и лежащий рядом.... ЕСТЬ АШЫПКО!

мэджик........ :eek:

а может ли компонент NMHTTP такую пакость делать?

PS: ну вот совсем ничего не делаю при закрытии....


Необходимо вначале выполнять дисконнект, обрабатывать его а только потом закрывать форму. Удалять компонент ненужно. Если он конечно не создается динамически.

309
18 января 2007 года
el scorpio
1.1K / / 19.09.2006
Вы хелп внимательно читаете? Ладно процитирую
Цитата:

Destroys an object and frees its associated memory, if necessary.

__fastcall Free();

Description

Do not call the Free method of an object. Instead, use the delete keyword, which invokes Free to destroy an object. Free automatically calls the destructor if the object reference is not NULL.


То есть, англицким языком говорят, не вызывать этот метод :D.

92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
да не надо тыкать в такие весчи ))))) всё давно поправлено ) и тем более я же писал (вы тему внимательно читаете? ;) ) что даже при условии того что НИЧЕГО не делал на выходе из программы, всё равно валилась ошибка.

2 _kot: дисконнект выполняем, везде где можно ) на дисконнекте стоит опять же try ... catch (...) никаких exception'ов не валится....

во как....:(
92
18 января 2007 года
Тень Пса
2.2K / / 19.10.2006
я тут покопался... и вспомнил, что я вставил в проектик компонентег.... TRxGifAnimator................... :D

капееееееееееееец, вот если его на OnCloseQuery() не пристрелить delet'ом.... то тогда ошибка есть... а если пристрелить. то ошибка пропадает :D

простите за беспокойство, но думалось просто НУ НИКАК НЕ НА ГИФАНИМАТОР!........................... =)))))))))))))))))))))))))))))

[COLOR=DarkRed]ВСЕМ СПАСИБО!!![/COLOR] Благодарю за Ваши ответы и оказанную помощь!!!!!!! :rolleyes:

PS: не буду больше пользовать этот компонент :-D
1
18 января 2007 года
kot_
7.3K / / 20.01.2000
Ну апстену наверное это жестоко :)
Ок. Тему закрываю.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог