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

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

Почему Incompatible types: 'Integer' and 'Pointer'? [D5]


Страницы:   1 2

De ©   (2005-12-09 12:37:00) 

Привет, All!
юзаю opengl конкретно функцию gluBuild2DMipmaps
вызваю её в своей функции последним параметром передаю "data: Pointer" пришедшее как параметр моей функции
прикомпиляции упорно кричит
Incompatible types: 'Integer' and 'Pointer'
почему?
объявление функции в opengl.pas:

function  gluBuild2DMipmaps (target: GLenum; components, width: GLint;
                            format, atype: GLenum; data: Pointer): Integer; stdcall;

её вызов в мой функции:

function glTex_Create(c, b: integer; Width, Height: integer; Clamp: boolean; Data: Pointer): TTexture;
...
gluBuild2DMipmaps(GL_TEXTURE_2D, c, Width, Height, b, GL_UNSIGNED_BYTE, Data);


msguns   (2005-12-09 14:05:00) [1]

>Плохиш ©   (09.12.05 13:58) [18]
>А Ctrl+Shift+Space не легче нажать

Действительно ;))


evvcom   (2005-12-09 14:02:00) [2]

Угу, легче. С чем-то у меня такая комбинация в памяти уже связана. Ладно, в нужном приложении пальцы сами вспомнят. :)
Спасибо.


msguns   (2005-12-09 13:59:00) [3]

А если нажать Ctrl+LeftButton на имени функции в строке обращения, то тоже зависнет ?


Плохиш   (2005-12-09 13:58:00) [4]


> evvcom ©   (09.12.05 13:51) [16]

А Ctrl+Shift+Space не легче нажать


De   (2005-12-09 13:57:00) [5]

у нас большая своя бибилотека, поэтому хинты отрубаю иначе гарантированый зависон при неосторожных манипуляциях, это и подвело


evvcom   (2005-12-09 13:51:00) [6]


> ошибки первым делом число параметров ввызываемой функции
> считаете?

Я обычно после имени функции открывающую скобку ставлю и Дельфя хинт показывает, что за параметр и какого типа она теперь ожидает. Если хинт погас после ввода нескольких параметров, опять скобку открываю, потом удаляю, но хинт остается. :)


De   (2005-12-09 13:37:00) [7]

вот и я проверил, но предварительно проконсультировался с АТЦАМИ


msguns   (2005-12-09 13:32:00) [8]

>De   (09.12.05 13:25) [13]
>вы всегда при появлении ошибки первым делом число параметров ввызываемой функции считаете?

При появлении подобной ошибки ВСЕГДА


De   (2005-12-09 13:25:00) [9]

>msguns
да не до того было, и так работы выше крыши, тем более что уж в подобных местах багу найти меньше всего ожидаешь или вы всегда при появлении ошибки первым делом число параметров ввызываемой функции считаете?


msguns   (2005-12-09 13:22:00) [10]

А подсчитать к-во параметров ожидаемых и передаваемых не приходило в голову ?


De   (2005-12-09 13:20:00) [11]

все народ у меня в opengl.pas бага там вместо 7 параметров только 6 описаны


Defunct   (2005-12-09 12:57:00) [12]

De   (09.12.05 12:51) [7]

imho с data у вас возможно все в порядке, а ошибка вероятно где-то здесь:

width: GLint; format, atype: GLenum;

gluBuild2DMipmaps(GL_TEXTURE_2D, c, Width, Height, b, GL_UNSIGNED_BYTE, Data);

в выделенных параметрах, что-то лишнее:

исходя из данного вами описания функции:
> function  gluBuild2DMipmaps (target: GLenum; components, width: GLint;
                           format, atype: GLenum; data: Pointer): Integer; stdcall;


Reindeer Moss Eater   (2005-12-09 12:56:00) [13]

С чего ты вообще решил, что виноват шестой параметр?


Reindeer Moss Eater   (2005-12-09 12:53:00) [14]

на основе этого происходит

На основе этого ничего кроме ошибки не происходит


De   (2005-12-09 12:51:00) [15]

>Reindeer Moss Eater
и что? на основе этого происходит изменение типа 6 параметра? почему?


Defunct   (2005-12-09 12:51:00) [16]

De   (09.12.05 12:42) [2]

и с учетом Reindeer Moss Eater ©   (09.12.05 12:47) [4]

Почитай описание функции, на месте Data поидее должен быть указатель на некую структуру данных, необходимую для mipmap'a.


De   (2005-12-09 12:50:00) [17]

> Defunct
да но ведь, на входе gluBuild2DMipmaps требует Pointer, и ему передается Pointer, исходя из сообщения и ваших пояснений делаю вывод что произошло конверитрование Pointer в Integer но почему, параметр Data: Pointer я вным образом негде не изменялся


Reindeer Moss Eater   (2005-12-09 12:47:00) [18]

Ты передешь в gluBuild2DMipmaps передаешь параметры.
2,3,4 и 5 параметры одного и того же типа: integer

А функция ждет 2-й и 3-й параметры одного типа, а 4-й и 5-й - другого типа.


Defunct   (2005-12-09 12:45:00) [19]

Pointer это 32х разрядный указатель на область памяти.
Integer - 32х разрядное целое число с диапазоном от -2млрд до +2млрд.

Фактически эти типы несовместимы, о чем вам и сообщает компилятор в сообщении Incompatible Types, но если Вы уверены в обратном, тогда из-за того, что объем этих типов одинаковый (физически переменные типа Integer и Pointer занимают 4 байта) можно применить TypeCast:

Integer( Data ), где Data переменная типа Pointer
Pointer( Data ), где Data переменная типа Integer.


De   (2005-12-09 12:42:00) [20]

так а что не так, как исправить
вопрос не зря задан в форуме "Начинающим"


Страницы:   1 2

Наверх

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