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

Project1

 找回密码
 注册会员
搜索
楼主: 八云紫
打印 上一主题 下一主题

[RMVX发布] 新手教程--从0开始学RGSS2(2013-09-21 修复索引地址)

  [复制链接]

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

141
发表于 2011-5-16 15:52:41 | 只看该作者
本帖最后由 link006007 于 2011-5-16 15:58 编辑
但如果是针对 Ruby 1.9 说的话就很恰当了,嘿嘿。

呃   好吧。。。
不过 Linux 是最早把 64 位架构的长模式应用于实际的,不至于不能向下兼容 32 位程序啊。可能用于兼容的库默认没有和发行版一同推出?

是的。linux是跟早就有x64了,可能和一些软件自身实现有关系,如果缺少库,是运行不起来的。不过现在linux的很多程序都有专门x64版本了,又没太在意这些了。
之前一直不明白, 对齐是怎么一回事, 现在倒是了解大概意思了.

还有就是, 之前使用这个来调用 API , 但是老是出错, 求解释:

字节对齐。很大程度上是一种优化措施,和CPU的访问各种存储器的长度有关,比如x86访问一次4字节,那么在访问{char c; int n;}这样的结构,访问n的时候为了提高效率,就在c之后填充3个字节的空白。所以各种编译器通常都会有这样的优化措施。
比如NDS按键信息的地址是0x04000130,有效长度为2字节。
那么很显然
typedef struct _s_arm9_inputs {
        VU16/*VU16 volatile unsigned short int*/ m_vuButtons;
}stInputArm9_Internal;
#define INPUT_ARM9_REG            ((stInputArm9_Internal volatile*)0x04000130)
理论上*INPUT_ARM9_REG可以有效访问这个内存,不过实际上,我总是得到错误的结果。
后来就是发现stInputArm9_Internal 给编译成4字节了(其实我编译器路径不对。。,不过还是能跑的。。。)!!
所以在编译类似这样的结构体时,要通知编译器特殊的字节对齐标准

另外,出错的提示或表现是什么。。。:
       char buf[256] = {
                0
        };
        GetForegroundWindow();
        GetWindowRect(GetForegroundWindow(), (LPRECT)buf);
运行正常。。。
(1)p get_window_rect.call(hwnd, lprect)  看看函数成功与否
(2)lprect.delete("\0") 可能照成结果不对,你是想删除结果末尾多余的0吧,不过,可能会把正确结果中的匹配项也删除。而且。。。实际上 "\0"好像删除不了什么。。。
因为"\0"*size 这样初始化出来的是同一个元素,delete不匹配。
arr = ["\0", "\0", "\0"]
p arr
arr.delete("\0")
p arr
arr = "\0" * 3
p arr
arr.delete("\0")
p arr
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2008-2-22
帖子
35
142
发表于 2011-5-16 20:40:49 | 只看该作者
回复 link006007 的帖子

函数运行都正常, 唯一不正常的就是, unpack 出来的结果不是正确的.

比如说 unpack 的结果是 [XXXXXXX, nil, nil, nil] (好吧, 打开VX 需要25秒的人其实就是咱). XXXXX 是数字.   
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5529
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
143
发表于 2011-5-16 21:19:58 | 只看该作者
String#delete! 才能将对象修改。或者是 String = String#delete。
但是我用String#delete!才会出现[XXXXXXX, nil, nil, nil]。

删掉了delete那句就正常的了,我们unpack只是 "l4" ,
就是最终变回四个成员(整数)。

这只是我的理解,错误不负责= =:
至于[XXXXXXX, nil, nil, nil]的原因是因为一个数pack "l"的时候,就会:
"\000\000\000\000",这是因为Long占了四个byte,
当这些用不尽的时候"\0\0\0\50\0\0\0\50\0\0\0\50\0\0\0\50"这样,
应该unpack"l*"的时候会有四个成员(数字),因为每四个"\"就是一个"l",
那么将"\0"删掉后,就会:"\50\50\50\50",就会变得很长,而且不是四个,是一个数字!
而且long的话有些byte分配会出现负数的情况。(这个不用所说- -)

点评

看了一次,发现很混淆= =语言描述有待改善- -  发表于 2011-5-16 21:34

评分

参与人数 1星屑 +200 收起 理由
铃仙·优昙华院·因幡 + 200 终于是看明白了~~~~

查看全部评分

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
28 小时
注册时间
2011-1-30
帖子
15
144
发表于 2011-5-16 21:33:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
145
发表于 2011-5-17 08:59:53 | 只看该作者
143 楼正解。String#delete 是非破坏性的,不会变异接收者;Array#delete 却是破坏性的。要是已经习惯了 Scheme、Clojure 等语言用 bang 命名破坏性函数的风格,在这里就很容易被迷惑了。
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2008-2-22
帖子
35
146
发表于 2011-5-17 09:30:11 | 只看该作者
  1. rect = "\0" * 255
  2.     Win32API.new("user32.dll", "GetWindowRect", "lp", "i").call(Frame.hwnd, rect)
  3.     rect.delete!("\0")
  4.     p rect.unpack("llll")
复制代码
这个是完整的代码, 结果是:
[331612557, nil, nil, nil]

点评

Frame.hwnd,RGE= =  发表于 2011-5-17 19:52
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

147
发表于 2011-5-17 09:35:12 | 只看该作者
本帖最后由 link006007 于 2011-5-17 09:51 编辑


########################
好吧,lz使用的是delete!,带!,破坏性。。 那么 结果不对正常了。。。我但是看成没!号的。。。。
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
36 小时
注册时间
2008-2-22
帖子
35
148
发表于 2011-5-17 09:54:04 | 只看该作者
感觉像是删掉了什么不应该删掉的东东了~~~{:nm_2:}

点评

是故意无视 143 楼的么……  发表于 2011-5-17 10:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
149
发表于 2011-5-17 10:06:23 | 只看该作者
本帖最后由 苏小脉 于 2011-5-17 11:18 编辑

回复 link006007 的帖子

你没看错,140 楼写的确实是不带 bang 的,估计是typo。

点评

= - 果然  发表于 2011-5-17 10:57
抱歉, 之前 143 没看明白, 现在知道了. 果然是删掉了不应该删掉的东东. 谢谢指导.  发表于 2011-5-17 10:38
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
28 小时
注册时间
2011-1-30
帖子
15
150
发表于 2011-5-17 16:57:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 00:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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