forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Varptr в Blitz3D (http://forum.boolean.name/showthread.php?t=13178)

maxturbo 21.08.2010 01:11

Varptr в Blitz3D
 
Переписываю код с BlitzMax на Blitz3D и столкнулся с такой фигней как можно в Blitz3D использовать функцию BlitzMax'a Varptr? или как она там называется :)
Я так понимаю она находит адрес переменной, а вот как в Blitz3D его найти...

.Squid 21.08.2010 01:46

Ответ: Varptr в Blitz3D
 
Никак

maxturbo 21.08.2010 02:03

Ответ: Varptr в Blitz3D
 
И что я так понимаю что адрес переменной узнать нельзя в Blitz3D

.Squid 21.08.2010 02:50

Ответ: Varptr в Blitz3D
 
Черезжопно можно.
http://fastlibs.com
Смотри FastPointer

maxturbo 21.08.2010 02:57

Ответ: Varptr в Blitz3D
 
Ну я так пологаю на C++ можно написать такую либу чтоб она возврощала адрес переменной? Верно?

Knightmare 21.08.2010 03:40

Ответ: Varptr в Blitz3D
 
Цитата:

Сообщение от maxturbo (Сообщение 159219)
Ну я так пологаю на C++ можно написать такую либу чтоб она возврощала адрес переменной? Верно?

Верно. Но не для тебя.

pax 21.08.2010 10:18

Ответ: Varptr в Blitz3D
 
Вроде бы можно получать адрес пользовательских типов на сколько я помню... только эти функции не документированы...

Вот тут есть примеры http://www.blitzbasic.com/Community/...hp?topic=53348

wolfhound512 21.08.2010 10:50

Ответ: Varptr в Blitz3D
 
Это не адрес, а порядковый номер объекта в типе

pax 21.08.2010 16:47

Ответ: Varptr в Blitz3D
 
Ну в переводе Handle - ссылка. Я не проверял значения получаемые этой функцией до этого. После маленького исследования получается, что это и не совсем номер элемента в типе. Это номер полученной ссылки на объект типа.
PHP код:

Type MyType
    Field simple
End Type

var1
.MyType = New MyType
var2
.MyType = New MyType

Print Handle(var1)
Print 
Handle(var2)
Delete var1
Print Handle(var2

Вот такой код выдает:
PHP код:

1
2


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

Knightmare 21.08.2010 16:55

Ответ: Varptr в Blitz3D
 
Мне западло поверять, но указание * как тэга типа в decls передает адрес банка или объекта пользовательского типа. Возможно оно будет работать и для переменных.

pax 21.08.2010 16:57

Ответ: Varptr в Blitz3D
 
Цитата:

Сообщение от Knightmare (Сообщение 159255)
Мне западло поверять, но указание * как тэга типа в decls передает адрес банка или объекта пользовательского типа. Возможно оно будет работать и для переменных.

Ну если человек напишет для этого еще свою библиотеку ;)

Knightmare 21.08.2010 17:07

Ответ: Varptr в Blitz3D
 
Ну за каким-то хреном же ему нужен адрес переменной.

maxturbo 21.08.2010 17:21

Ответ: Varptr в Blitz3D
 
Короче объясню так, есть Ninfa3D для BlitzMax я ее юзаю в Blitz3D все работает вот только в BlitzMax команда используется вот так
Код:

       
Local sampledist:Float = 0.0015
Local strength:Float = 4.6
Local multiplier:Float = 0.22
CreateDOF(512,512,Varptr sampledist,Varptr strength,Varptr multiplier)

А как в Blitz3D использовать, если просто ввести переменные то выходит ошибка!!!

pax 21.08.2010 17:25

Ответ: Varptr в Blitz3D
 
если это dll, то просто объяви эту функцию как нужно в decls. И должно работать.

maxturbo 21.08.2010 17:31

Ответ: Varptr в Blitz3D
 
Цитата:

Сообщение от pax (Сообщение 159262)
если это dll, то просто объяви эту функцию как нужно в decls. И должно работать.

Да это dll но вроде бы все правельно пишу в decls
Вот так она выглядит в BlitzMax
Код:

Global CreateDOF:Int Ptr(w:Int, h:Int, param0:Float Ptr, param1:Float Ptr, param2:Float Ptr) "C" = GetProcAddress(dll,"CreateDOF")
А вот так вот я делаю в decls
Код:

NF_CreateDOF_%(w%,h%,param0#,param1#,param2#):"CreateDOF"


Часовой пояс GMT +4, время: 06:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot