![]() |
Varptr в Blitz3D
Переписываю код с BlitzMax на Blitz3D и столкнулся с такой фигней как можно в Blitz3D использовать функцию BlitzMax'a Varptr? или как она там называется :)
Я так понимаю она находит адрес переменной, а вот как в Blitz3D его найти... |
Ответ: Varptr в Blitz3D
Никак
|
Ответ: Varptr в Blitz3D
И что я так понимаю что адрес переменной узнать нельзя в Blitz3D
|
Ответ: Varptr в Blitz3D
|
Ответ: Varptr в Blitz3D
Ну я так пологаю на C++ можно написать такую либу чтоб она возврощала адрес переменной? Верно?
|
Ответ: Varptr в Blitz3D
Цитата:
|
Ответ: Varptr в Blitz3D
Вроде бы можно получать адрес пользовательских типов на сколько я помню... только эти функции не документированы...
Вот тут есть примеры http://www.blitzbasic.com/Community/...hp?topic=53348 |
Ответ: Varptr в Blitz3D
Это не адрес, а порядковый номер объекта в типе
|
Ответ: Varptr в Blitz3D
Ну в переводе Handle - ссылка. Я не проверял значения получаемые этой функцией до этого. После маленького исследования получается, что это и не совсем номер элемента в типе. Это номер полученной ссылки на объект типа.
PHP код:
PHP код:
|
Ответ: Varptr в Blitz3D
Мне западло поверять, но указание * как тэга типа в decls передает адрес банка или объекта пользовательского типа. Возможно оно будет работать и для переменных.
|
Ответ: Varptr в Blitz3D
Цитата:
|
Ответ: Varptr в Blitz3D
Ну за каким-то хреном же ему нужен адрес переменной.
|
Ответ: Varptr в Blitz3D
Короче объясню так, есть Ninfa3D для BlitzMax я ее юзаю в Blitz3D все работает вот только в BlitzMax команда используется вот так
Код:
|
Ответ: Varptr в Blitz3D
если это dll, то просто объяви эту функцию как нужно в decls. И должно работать.
|
Ответ: Varptr в Blitz3D
Цитата:
Вот так она выглядит в BlitzMax Код:
Global CreateDOF:Int Ptr(w:Int, h:Int, param0:Float Ptr, param1:Float Ptr, param2:Float Ptr) "C" = GetProcAddress(dll,"CreateDOF") Код:
NF_CreateDOF_%(w%,h%,param0#,param1#,param2#):"CreateDOF" |
Ответ: Varptr в Blitz3D
попробуй так:
Код:
NF_CreateDOF_*(w%,h%,param0*,param1*,param2*):"CreateDOF" |
Ответ: Varptr в Blitz3D
Не работает, ошибку выдает!!!
|
Ответ: Varptr в Blitz3D
А что за ошибка?
|
Ответ: Varptr в Blitz3D
Просто выдает ошибку отправить отчет Microsoft, даже не компилируется!!!
|
Ответ: Varptr в Blitz3D
Не компилируется и выдает ошибку, это на каком же этапе?
|
Ответ: Varptr в Blitz3D
maxturbo
Когда обьявляешь в деклсе аргумент со звездочкой, это значит что туда надо передавать либо экземпляр типа (Type) либо банк (CreateBank и т.д) Код:
; создаем банки и записываем в них значения Только на кой хер там указатели нужно передавать, обычно так делают чтобы вернуть какие-то значения из функции через эти указатели, так что будь внимательнее, перед удаление банков если нужно будет забери значения с помощью PeekFloat, тогда наверное записывать в банки не нужно, если они для возвращения нужны, читай справку по движку. |
Ответ: Varptr в Blitz3D
Передавать банки вместо указателей не получится, т.к. блиц в этом случае передает указатель на структуру типа
Код:
struct bank { |
Ответ: Varptr в Blitz3D
Цитата:
Цитата:
|
Ответ: Varptr в Blitz3D
А вот к примеру потом при нажатие клавиши переменная значение меняет, и как это должно выглядеть?
Вот код! Код:
If NF_KeyDown(KEY_1) Then sampledist = sampledist+ 0.0001 |
Ответ: Varptr в Blitz3D
Цитата:
Банки тогда не удаляй и в них перезаписывай Код:
If NF_KeyDown(KEY_1) Then PokeFloat(sampledist, 0, PeekFloat(sampledist, 0) + 0.0001) |
Ответ: Varptr в Blitz3D
Цитата:
|
Ответ: Varptr в Blitz3D
Делаю все как ты описываешь, все равно ноль эфекта, только что запускаться стало и все!!!
Собственно вот в decls у меня записано так Код:
NF_CreateDOF%(w%,h%,param0*,param1*,param2*):"CreateDOF" Код:
Include "ninfa3d.bb" |
Ответ: Varptr в Blitz3D
Зачем так извращатся? Пиши на BlitzMax`е.
|
Ответ: Varptr в Blitz3D
И походу дела я так понимаю нужно чтобы вновь измененные параметры переменной с помощью клавиши 1 или 2 передались NF_CreateDOF или как хрен его знает!!!
|
Ответ: Varptr в Blitz3D
maxturbo
Во-первых зачем ты здесь единицу ставишь? Цитата:
Во-вторых нужно знать как работает эта NF_CreateDOF, точная декларация нужна. Как я уже говорил читай документацию к движку, возможно ты ее неверно используешь. Или лучше забей на эту хрень, это очередная говнообертка иррлихта, да еще из блица юзать действительно извращение. |
Ответ: Varptr в Blitz3D
Все заработало )) СПС тебе большущее )
А по поводу того что юзать из блитза, мне кажется проще в Blitz3D чем в BlitzMax и работает ни чуть не хуже :) |
Ответ: Varptr в Blitz3D
Цитата:
|
Ответ: Varptr в Blitz3D
Так я пробовал его еще на BlitzPlus юзать там он на много лучше работает и без глюков но вот только действительно тормозной, загружаю свою машину туда и он пол часа включается, так что я думаю хорошего на нем не сделаешь :)
|
Часовой пояс GMT +4, время: 09:44. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot