Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2011, 22:21   #1
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
Стрелка Ошибка при закрытии формы..динамический движек.

Всем доброго времени суток!я делаю свой первый динамический движек простенькой игрушки.на первой форме будет меню, на второй сама игрушка. так вот, при закрытии второй формы возникает в 2 из 5 случаях ошибка Access voilation at address 00000000. Read of address 00000000.
или
Project Project1.exe raised exception class EAccessViolation with message
'access violation at address 019F6E68.Read of address FFFFFFFF'. process stoped.
Use Step or Run to Continue.

вроде все объекты, созданные ранее я уничтожаю при закрытии.. не пойму в чем дело..! и при том, ошибка возникает только тогда, когда форма закрывается программно(то есть, когда жизни кончаются, меня убивают, форма закрывается), а когда просто закрываю, ошибки нет.. вот исходник, посмотрите пожалуйста что же тут у меня не так..
Вложения
Тип файла: rar Dynamyc.rar (253.2 Кб, 20 просмотров)
Vervolf вне форума Ответить с цитированием
Старый 22.01.2011, 22:47   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Код даже не смотрел.
Не вижу никакой ошибки выполнения...
Запускаю, ничего не трогаю, через некоторое время появляется мессадж "Конец игры!Вы набрали 0 очков."
Жму ОК, форма закрывается и опять видна главная...
Пробовал двигать мышкой - "Конец игры!Вы набрали 100 очков." и все нормально.

Последний раз редактировалось asmodey1; 22.01.2011 в 22:51.
asmodey1 вне форума Ответить с цитированием
Старый 22.01.2011, 22:49   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> что же тут у меня не так

Всё.
Начиная с безобразного форматирования кода.
Говнокод никогда работать как задумывалось не будет.
mss вне форума Ответить с цитированием
Старый 22.01.2011, 22:52   #4
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
Код даже не смотрел.
Не вижу никакой ошибки выполнения...
Запускаю, ничего не трогаю, через некоторое время появляется мессадж "Конец игры!Вы набрали 0 очков."
Жму ОК, форма закрывается и опять видна главная...
Пробовал двигать мышкой - "Конец игры!Вы набрали 100 очков." и все нормально.
так нажми на бутон первый.
Vervolf вне форума Ответить с цитированием
Старый 22.01.2011, 22:56   #5
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Начиная с безобразного форматирования кода
Ну, форматирование не влияет.
А вот конструкции вроде AND ... OR ... AND надо бы более внятно писать, то есть, например :
Код:
if ((bk.Left>img.Left)
and(bk.Left<img.Left+img.Width)
and(bk.Top>img.Top)
and(bk.Top<img.Top+img.Height))
or ((bk.Left+bk.Width-Round(bk.Width/2)>img.Left)
and (bk.Left<img.Left+img.Width)
and(bk.Top+bk.Height-Round(bk.Height/2)>img.Top)
and(bk.Top<img.Top+img.Height))
 then
Хотя... может быть у вас не такая логика заложена...
asmodey1 вне форума Ответить с цитированием
Старый 22.01.2011, 23:12   #6
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
> что же тут у меня не так

Всё.
Начиная с безобразного форматирования кода.
Говнокод никогда работать как задумывалось не будет.
я же сказал, пишу первый раз. сами то как начинали программировать?посмотреть бы ваши исходники..
Vervolf вне форума Ответить с цитированием
Старый 22.01.2011, 23:22   #7
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

1. Замени Destroy на FreeAndNil
2. Проверяй везде, при обращении к своим объектам на assigned.

Я это сделал за тебя и ошибки не стало. А вообще, все ошибки легко нашлись отладчиком.

P.S. Код ужасен
_Engine_ вне форума Ответить с цитированием
Старый 22.01.2011, 23:29   #8
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
1. Замени Destroy на FreeAndNil
2. Проверяй везде, при обращении к своим объектам на assigned.

Я это сделал за тебя и ошибки не стало. А вообще, все ошибки легко нашлись отладчиком.

P.S. Код ужасен
да че вы все с этим кодом? ну как его сделать не ужасным?ну, за критику тоже спасибо
Vervolf вне форума Ответить с цитированием
Старый 22.01.2011, 23:32   #9
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

На слегка поправленный, без твоей ошибки. Компилил в D2010, так что, бери только pas файлы

удалил файл

Последний раз редактировалось _Engine_; 22.01.2011 в 23:51.
_Engine_ вне форума Ответить с цитированием
Старый 22.01.2011, 23:46   #10
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

Спасибо, но ошибка все равно вылетает..
Vervolf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при закрытии формы после обработки в потоке furstenberg Общие вопросы Delphi 7 05.07.2010 12:19
Уничтожать созданные формы при закрытии? Как? TwiX Общие вопросы Delphi 4 09.04.2010 09:49
запуск процесса при закрытии формы RUSlan48 Общие вопросы Delphi 3 29.03.2010 21:49
При закрытии формы, закрываеться книга Excel Even Microsoft Office Excel 2 10.01.2010 12:38
Сворачивание в трей при закрытии формы xxxsas Общие вопросы C/C++ 0 22.01.2009 08:11