Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему этот код вызывает ошибку [Delphi, OpenGL]


Yanis ©   (2006-01-30 13:18:00) 

Ошибка возникает на строчке
glutCreateWindow('Test');
Вот код:

program Project1;
{$APPTYPE CONSOLE}
uses
 SysUtils, Glut, OpenGL;

procedure Display; cdecl;
begin
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 glLoadIdentity;
 glutWireTeapot(0.5);
 glutSwapBuffers;
end;

procedure Reshape(w, h: Integer); cdecl;
begin
 glViewport(0, 0, w, h);
end;

procedure Keyboard(key: Byte; x, y: Integer); cdecl;
begin
 if key = 27 then
   Halt;
end;

var
 cmd: array[0..31] of PChar;
 i, count: Integer;
begin
 for i := 0 to ParamCount do
   cmd[i] := PChar(ParamStr(i));
 count := ParamCount + 1;
 glutInit(@count, @cmd);

 glutInitDisplayMode(GLUT_RGB or GLUT_DOUBLE or GLUT_DEPTH);
 glutInitWindowPosition(50, 50);
 glutInitWindowSize(512, 512);
 glutCreateWindow('Test');
 glEnable(GL_DEPTH_TEST);
 glutDisplayFunc(Display);
 glutReshapeFunc(Reshape);
 glutKeyboardFunc(Keyboard);
 glutMainLoop;
end.


Yanis   (2006-01-30 15:38:00) [1]

Всем спасибо. При помощи XProger'а я разобрался с проблемой. Просто модуль Glut.pasкриво написан и там просто небыла реализована загрузка этой процедуры и её адрес всегда был nil. Кому интересно его можно скачать отсуда
http://www.mit.jyu.fi/vesal/kurssit/winohj/htyot/h02/ajkolio/delphi/glunits/GLUT.pas


XProger   (2006-01-30 14:57:00) [2]

Ладно, поставлю вопрос по-другому... Чему равен адрес процедуры @glutInitWindowPosition до её вызова?


Cash   (2006-01-30 14:52:00) [3]

Yanis ©   (30.01.06 14:30) [9]:
Sorry men! Be calm and... be not warry, somewho konw this trouble!
Patient!...


Yanis   (2006-01-30 14:51:00) [4]

2 [11]
Модуль Glutс сайта delphi3d.net Там загрузка происходит при инициализации модуля. т.е. динамическая.


XProger   (2006-01-30 14:46:00) [5]

Yanis, линковка процедуры glutInitWindowPosition - динамическая? Линкуешь перед вызовом?


Yanis   (2006-01-30 14:42:00) [6]

Если кто то возмётся помогать, то могу выслать все файлы проекта включая модули в uses.


Yanis   (2006-01-30 14:30:00) [7]

Послушайте. За кого вы меня принимаете? Меня это обижет:

> А ты знаешь что это значит?

:)
Я бы не полез в форуме, если бы всё не перепробовал, что в моих силах. Мне кажется что где то, какая то функция не загружена. Ошибка:

> Exception EAccessViolation in module Project1.exe at 00000000.
> Access violation at address 00000000. Read of address 00000000.
>


Cash   (2006-01-30 14:10:00) [8]

Yanis ©   (30.01.06 14:05) [7]:
Дак вот: нешути с консолью! :)))
Убери эту директиву и попробуй еще раз.


Yanis   (2006-01-30 14:05:00) [9]

Господи, что вы пристали к {$APPTYPE CONSOLE}? Просто у меня был пример, в нём выводилиськ оординаты прямов консоль. Хотел передалть этот пример с использованием glut. Дело то не в консольном приложении.


Cash   (2006-01-30 14:00:00) [10]

Да, ведь Soulghai ничего другого не выделял.


Yanis   (2006-01-30 13:46:00) [11]


> А ты знаешь что это значит?

Что?
{$APPTYPE CONSOLE} что значит?


Cash   (2006-01-30 13:43:00) [12]

Yanis ©   (30.01.06 13:40) [3]:
А ты знаешь что это значит?


Yanis   (2006-01-30 13:40:00) [13]

2 Soulghai
Да вообще то это мне не нужно. Но это и не мешает. Скорее даже помогает при отладке.


Soulghai   (2006-01-30 13:34:00) [14]

{$APPTYPE CONSOLE} - нахрена тебе?


Yanis   (2006-01-30 13:31:00) [15]

Только что выяснилось, что ошика возникает ещё раньше. Вот на этой строчке:

glutInitWindowPosition(50, 50);


Наверх

Титульная страница Поиск, карта сайта Написать письмо