Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизПочему Incompatible types: Integer and Pointer ? Найти похожие ветки
← →
De (2005-12-09 12:37) [0]Привет, 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);
← →
Reindeer Moss Eater © (2005-12-09 12:40) [1]Incompatible types: "Integer" and "Pointer"
почему?
По определению
← →
De (2005-12-09 12:42) [2]так а что не так, как исправить
вопрос не зря задан в форуме "Начинающим"
← →
Defunct © (2005-12-09 12:45) [3]Pointer это 32х разрядный указатель на область памяти.
Integer - 32х разрядное целое число с диапазоном от -2млрд до +2млрд.
Фактически эти типы несовместимы, о чем вам и сообщает компилятор в сообщении Incompatible Types, но если Вы уверены в обратном, тогда из-за того, что объем этих типов одинаковый (физически переменные типа Integer и Pointer занимают 4 байта) можно применить TypeCast:
Integer( Data ), где Data переменная типа Pointer
Pointer( Data ), где Data переменная типа Integer.
← →
Reindeer Moss Eater © (2005-12-09 12:47) [4]Ты передешь в gluBuild2DMipmaps передаешь параметры.
2,3,4 и 5 параметры одного и того же типа: integer
А функция ждет 2-й и 3-й параметры одного типа, а 4-й и 5-й - другого типа.
← →
De (2005-12-09 12:50) [5]> Defunct
да но ведь, на входе gluBuild2DMipmaps требует Pointer, и ему передается Pointer, исходя из сообщения и ваших пояснений делаю вывод что произошло конверитрование Pointer в Integer но почему, параметр Data: Pointer я вным образом негде не изменялся
← →
Defunct © (2005-12-09 12:51) [6]De (09.12.05 12:42) [2]
и с учетом Reindeer Moss Eater © (09.12.05 12:47) [4]
Почитай описание функции, на месте Data поидее должен быть указатель на некую структуру данных, необходимую для mipmap"a.
← →
De (2005-12-09 12:51) [7]>Reindeer Moss Eater
и что? на основе этого происходит изменение типа 6 параметра? почему?
← →
Reindeer Moss Eater © (2005-12-09 12:53) [8]на основе этого происходит
На основе этого ничего кроме ошибки не происходит
← →
Reindeer Moss Eater © (2005-12-09 12:56) [9]С чего ты вообще решил, что виноват шестой параметр?
← →
Defunct © (2005-12-09 12:57) [10]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;
← →
De (2005-12-09 13:20) [11]все народ у меня в opengl.pas бага там вместо 7 параметров только 6 описаны
← →
msguns © (2005-12-09 13:22) [12]А подсчитать к-во параметров ожидаемых и передаваемых не приходило в голову ?
← →
De (2005-12-09 13:25) [13]>msguns
да не до того было, и так работы выше крыши, тем более что уж в подобных местах багу найти меньше всего ожидаешь или вы всегда при появлении ошибки первым делом число параметров ввызываемой функции считаете?
← →
msguns © (2005-12-09 13:32) [14]>De (09.12.05 13:25) [13]
>вы всегда при появлении ошибки первым делом число параметров ввызываемой функции считаете?
При появлении подобной ошибки ВСЕГДА
← →
De (2005-12-09 13:37) [15]вот и я проверил, но предварительно проконсультировался с АТЦАМИ
← →
evvcom © (2005-12-09 13:51) [16]
> ошибки первым делом число параметров ввызываемой функции
> считаете?
Я обычно после имени функции открывающую скобку ставлю и Дельфя хинт показывает, что за параметр и какого типа она теперь ожидает. Если хинт погас после ввода нескольких параметров, опять скобку открываю, потом удаляю, но хинт остается. :)
← →
De (2005-12-09 13:57) [17]у нас большая своя бибилотека, поэтому хинты отрубаю иначе гарантированый зависон при неосторожных манипуляциях, это и подвело
← →
Плохиш © (2005-12-09 13:58) [18]
> evvcom © (09.12.05 13:51) [16]
А Ctrl+Shift+Space не легче нажать
← →
msguns © (2005-12-09 13:59) [19]А если нажать Ctrl+LeftButton на имени функции в строке обращения, то тоже зависнет ?
← →
evvcom © (2005-12-09 14:02) [20]Угу, легче. С чем-то у меня такая комбинация в памяти уже связана. Ладно, в нужном приложении пальцы сами вспомнят. :)
Спасибо.
← →
msguns © (2005-12-09 14:05) [21]>Плохиш © (09.12.05 13:58) [18]
>А Ctrl+Shift+Space не легче нажать
Действительно ;))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.011 c