设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 流川枫
打印 上一主题 下一主题

[已经过期] Win32API.new的参数类型为浮点数或长整数时用什么符号表示?

[复制链接]

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42365
在线时间
7601 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

11
发表于 2014-6-29 16:24:20 | 只看该作者
流川枫 发表于 2014-6-29 16:14
比起纸上谈兵不如给个范例代码吧
  1. double = 3.14159265358 # 测试用浮点数
  2. pdouble = [double].pack("d") # 取得以double形式序列化的double变量的指针
复制代码
pdouble传给dll,dll里用浮点数指针来玩就可以。

点评

看来这个问题可能是RUBY的设计缺陷,真心无语  发表于 2014-6-29 16:35
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
12
 楼主| 发表于 2014-6-29 16:29:35 | 只看该作者
fux2 发表于 2014-6-29 16:24
pdouble传给dll,dll里用浮点数指针来玩就可以。

不过这样是建立在那个API是传递指针,如果必须调用 如 ULONGLONG WINAPI GetTickCount64(void); 这个API,用pack也没用吧。 还是说RUBY本身就是不支持 GetTickCount64 这个API的调用吗?
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42365
在线时间
7601 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

13
发表于 2014-6-29 16:44:47 | 只看该作者
流川枫 发表于 2014-6-29 16:29
不过这样是建立在那个API是传递指针,如果必须调用 如 ULONGLONG WINAPI GetTickCount64(void); 这个API ...


评论和回复写一起把,每次收到好几个提醒真蛋疼。

不兼容32位寄存器的类型本身是不支持的,你必须通过第三方dll二次调用。(浮点不支持可能是缺陷吧。)

点评

这个API本来是返回一个小数然后在脚本里乘以max得到整数,所以现在直接将乘法也放到API里然后返回整数。对于这个API而言比起改成pack更方便。  发表于 2014-6-29 17:28
一定要用浮点用上面的pack方法就行,只要dll能接收指针,任何类型或者结构体都能传进去。  发表于 2014-6-29 17:06
好吧,幸好那个DLL是我自己写的,现在我放弃矜持直接返回整数 就是从 double test()改为long test(long max)  发表于 2014-6-29 16:55
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-20 01:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表