![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Access vialation IDE при завершении виполнения разрабатываемой [D6, Win2k, WinXP]
JJ © (2006-04-14 12:53:00)Здравствуйте! На D6 часто возникает проблемма Access violation.
Например, для пустой формы пишу в OnCreate:
procedureForm1.FormCreate(Sender: TObject);
vari: integer;
begin
fori:=0 to 10do begin
ifi=2then
end;
ShowMessage(IntToStr(i));
end;
Запускаю из IDE программу, она отрабатывает, закрываю ее и возникает Access violation... IDE висит с запущенной сессией Debug`а. CTRL+F2 ничего не дает. После появляется ошибка "Internal COM Error - 631". Из этого состояния можно выйти только перезапуском IDE.
Как избавиться от этого глюка? Если патч?
JJ (2006-04-14 18:43:00) [1]А в том куске какие проблемы?
Desdechado (2006-04-14 18:38:00) [2]это явление типичное, если неправильно оперировать с памятью, не зная основ
JJ (2006-04-14 17:00:00) [3]А такое явление типичное, или только у меня этот глюк? Может дистрибутив такой?
Desdechado (2006-04-14 16:00:00) [4]> выводить он должен 11
Не должен и не будет. Ибо после завершения цикла переменная хранит неопределенное значение (последнее достигнутое, граничное, заграничное), причем неопределенность усугубляется тем, что при разных опциях компилятора и разных его версиях оно разное.
JJ (2006-04-14 15:19:00) [5]Такой код получился случайно :) и выводить он должен 11. Если поставить:
if i=2 then break
то такой ошибки не возникает.
Но тем не менее, такой глюк переодически появляется в разных проектах и портит жизнь. Бывали ситуации, когда ставишь точку останова, F9 до точки останова и F9 после - все нормально, а если не ставить, появляется эта ошибка.
balepa (2006-04-14 14:56:00) [6]
> TYB (14.04.06 14:48) [4]
Код JJ © (14.04.06 12:53) тоже работает если он хочет что бы ему вывелось 11 хотя у тебя правильнее будет, но об этом судить автору ветки
> JJ ©
Смотри Warning
FOR-Loop variable 'i' may be undefined after loop
TYB (2006-04-14 14:48:00) [7]А если так
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i:=0 to 10 do begin
if i=2 then
ShowMessage(IntToStr(i));
end;
end;
balepa (2006-04-14 14:30:00) [8]
> JJ © (14.04.06 12:53)
> Как избавиться от этого глюка? Если патч?
Delphi 7 :)
> Desdechado © (14.04.06 13:11) [1]
> 2. ошибка "...COM..." говорит о подключенных компонентах, а не пустой
> форме
Может это ошибка в IDE
JJ (2006-04-14 14:07:00) [9]Почему не скомпилируется? Очень даже компилируется и запускается. Подключены только стандартные модули, которые ставятся по умолчанию для нового проекта. Тоесть делал так: File->New Application. На новой форме двойным щелчком перехожу в OnCreate, набираю приведенный код, запускаю получившееся приложение, на окне сообщения кликаю Ок, закрываю приложение и получаю ошибку Access violation.
Desdechado (2006-04-14 13:11:00) [10]1. приведенный код даже не скомпилируется
2. ошибка "...COM..." говорит о подключенных компонентах, а не пустой форме