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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.07.2013, 11:36   #1
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию Ошибка, какого рода ?

Привет. Я сталкнулся с такой ошибкой (рис.1) какого она рода ?. Ошибка памяти ? Но компилятор не указывает на код..
stalker1995s вне форума
Старый 03.07.2013, 11:47   #2
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

Цитата:
Сообщение от stalker1995s Посмотреть сообщение
Привет. Я сталкнулся с такой ошибкой (рис.1) какого она рода ?. Ошибка памяти ? Но компилятор не указывает на код..
http://www.gunsmoker.ru/2009/05/access-violation.html

Для того чтобы узнать причину ошибки, необходимо посмотреть код..
ZvEr_HaCkEr вне форума
Старый 03.07.2013, 11:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

обычно AccessViolation возникает при попытке обратиться к ещё несозданному объекту.

пройдитесь пошагово (или поставьте точку останова в коде) и посмотрите, какая операция приводит к эксепшену.
Serge_Bliznykov вне форума
Старый 03.07.2013, 11:52   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

а должен указывать?
Даже если указывает, то это мало что дает.

Ошибку создаете вы и передаете её в DLL. А AV происходит внутри DLL.
Человек_Борща вне форума
Старый 03.07.2013, 14:53   #5
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию

Ошибка, появилась после появления в коде это данной процедуры:
Цитата:
procedure RenderBones;
var i: integer;
begin
glPointSize(10);
glBegin(gl_Points);
for i:= 0 to Length(Models.Link)-1 do
begin
glColor3f(1,0,0);
glVertex3f(Joint[i].Point[0],Joint[i].Point[1],Joint[i].Point[2]);
end;
glEnd;

{ glBegin(Gl_Lines);
for i:=0 to Length(Models.Link) do
begin
glVertex3f(Joint[i].Point[0],
Joint[i].Point[1],
Joint[i].Point[2]);
glVertex3f(Joint[Models.Link[i]].Point[0],
Joint[Models.Link[i]].Point[1],
Joint[Models.Link[i]].Point[2]);
end;
glEnd;}
end;

procedure Matrix;
var i: integer;
begin
for i:=0 to length(Models.Link)-1 do SetLength(Joint,i);
for i:=0 to length(Models.Link)-1 do
begin
Joint[i].Point[0]:= 0.0;
Joint[i].Point[1]:= 0.0;
Joint[i].Point[2]:= 0.0;
{Ñîçäàåì ìàòðèöó ïîâîðîòà}

Joint[i].otnos:= Xrot(-Models.Time.Rotation[i][0]);
CConcatMatrix(Yrot(-Models.Time.Rotation[i][1]), Joint[i].otnos);
CConcatMatrix(Zrot(-Models.Time.Rotation[i][2]), Joint[i].otnos);
{Èçìåíÿåì ìàòðèöó}
Joint[i].otnos[3,0]:=Models.Time.Translation[i][0];
Joint[i].otnos[3,1]:=Models.Time.Translation[i][1];
Joint[i].otnos[3,2]:=Models.Time.Translation[i][2];
{Ïðèêðèïëåí ëè ê äðóãîìó ñóñòàâó ?}
if Models.Link[i]<>-1 then
begin
Joint[i].absolut:=ConcatMatrix(Joint[Models.Link[i]].absolut, Joint[i].otnos);
Joint[i].absolut:=Joint[i].otnos;
{Ñîçäàíèå ìàòðèö}
Joint[i].absolut:=ConcatMatrix(Joint[Models.Link[i]].absolut,Joint[i].otnos)
end
else
Joint[i].absolut:=Joint[i].otnos;

end;
end;
Замечу, что она то есть, то ее нету.. Ошибка. С данными все вроде как в порядке..
stalker1995s вне форума
Старый 03.07.2013, 15:08   #6
stalker1995s
Gamedeveloper
Форумчанин
 
Аватар для stalker1995s
 
Регистрация: 11.07.2012
Сообщений: 149
По умолчанию

Задача решена, всем спасибо. Разобрался. Ошибка была в:

Цитата:
if Models.Link[i]<>-1 then
begin
Joint[i].absolut:=ConcatMatrix(Joint[Models.Link[i]].absolut, Joint[i].otnos);
Joint[i].absolut:=Joint[i].otnos;
{Ñîçäàíèå ìàòðèö}
Joint[i].absolut:=ConcatMatrix(Joint[Models.Link[i]].absolut,Joint[i].otnos)
end
else
Joint[i].absolut:=Joint[i].otnos;
Изменил на:
Цитата:
if Models.Link[i]<>-1 then
Joint[i].absolut:=ConcatMatrix(Joint[Models.Link[i]].absolut,
Joint[i].otnos)
else
Joint[i].absolut:=Joint[i].otnos;
Не правильно оброщался..
stalker1995s вне форума
Старый 03.07.2013, 15:09   #7
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Ищите выход за границы массива
--
не успел
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при скачивания какого либо файла Eink Помощь студентам 3 08.02.2013 19:36
Из какого вы города? Дарья Книга Свободное общение 57 14.04.2012 19:13
Разработка сайтов, дизайн, графика, программирование, написание любого рода скриптов. Artklimoff Фриланс 0 18.12.2010 21:24
Программа, вычисляющая криволинейный интеграл второго рода. TERAB1T Помощь студентам 0 12.09.2010 00:57