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

Project1

 找回密码
 注册会员
搜索
查看: 8157|回复: 58
打印 上一主题 下一主题

问几个涉及到Ruby底层的问题……

 关闭 [复制链接]

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

跳转到指定楼层
1
发表于 2009-3-8 15:15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
所谓底层是相对于RGSS……也就是Ruby层

1.怎么保存运行环境(保存所有object),并且在对象发生了改变后可以还原
  也就是相当于即时存档吧
2.怎么获取caller对象,默认的caller只能获取代码页、行数和方法名,不能获取调用者对象


错误日志
http://rpg.blue/viewthread.php?tid=78782&ntime=2009%2D3%2D8+20%3A38%3A42
即时存档……跟本帖的要求不一样
http://rpg.blue/viewthread.php?tid=118882&ntime=2009%2D3%2D8+20%3A50%3A21
版务信息:版主帮忙结贴~
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上

Lv1.梦旅人

风之塞尔达

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

贵宾

2
发表于 2009-3-9 01:05:35 | 只看该作者
写文档和winAPI都已经忘光了阿...{/gg}

caller是什么  ruby 的 backtrace?
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
98
在线时间
12 小时
注册时间
2008-4-29
帖子
461
3
发表于 2009-3-9 01:29:50 | 只看该作者
在RUBY里咋用API?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
2 小时
注册时间
2008-4-10
帖子
298
4
发表于 2009-3-9 02:05:35 | 只看该作者
这个问题看的我很迷茫~
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

5
 楼主| 发表于 2009-3-9 02:26:01 | 只看该作者
以下引用link006007于2009-3-8 17:05:35的发言:

写文档和winAPI都已经忘光了阿...

caller是什么  ruby 的 backtrace?

以下引用淘金鸭于2009-3-8 17:29:50的发言:

在RUBY里咋用API?

Win32API.new
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

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

贵宾

6
发表于 2009-3-9 03:53:30 | 只看该作者
在ruby自带的backtrace中, 出错是可以获取出错的类的名称的 ..。 但是这些不属于backtrace
如果是要出错的类实例化的对象的变量名的话。。 ms需要自己修改ruby源码了{/gg}

VC++
#define DEFS_ERRORMSG_LEN_CHAR 256
... ...
static char pOut[DEFS_ERRORMSG_LEN_CHAR];
... ...
VALUE lasterr                  = rb_gv_get("$!");

VALUE klass                    = rb_class_path(CLASS_OF(lasterr));

VALUE message                  = rb_obj_as_string(lasterr);
::sprintf_s(pOut, DEFS_ERRORMSG_LEN_CHAR, "\nErrorType:\n\t%s \nMessage:\n\t%s\n", RSTRING(klass)->ptr, RSTRING(message)->ptr);
if(!NIL_P(ruby_errinfo)) {
    VALUE ary                  = rb_funcall(ruby_errinfo, rb_intern("backtrace"), 0);
    ... ...
    ... ...
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

7
 楼主| 发表于 2009-3-9 04:38:25 | 只看该作者
不一定要出错呀,错误记录已经有了哦
http://rpg.blue/viewthread.php?tid=78782&ntime=2009%2D3%2D8+20%3A38%3A42
不过我看不太懂
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-12-20
帖子
213
8
发表于 2009-3-9 19:47:03 | 只看该作者
1 、你先考虑好还原时候程序的切入点吧,从什么地方开始还原。。 (用ObjectSpace)可以获取所有对象。。。
2、问题无效。。= = 略过
3、很显然的API问题,一可以直接使用API创建窗口,二是用DLL封装窗口rgss调用接口
4、receiver、context和binding
    receiver 方法的接受者 obj.clone # 这里obj可以理解为receiver
    context  执行环境的上下问,就理解为保存了程序执行环境的一些信息 比如 局部变量等。。
    binding一般和eval连用,banding一个上下文,可以作为eval的运行环境, 比如有的时候
   eval("p a") 如果这里a是局部变量则eval的环境无法访问,可以用绑定当前环境传递给eval运行= =
哼哼。。。。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

9
发表于 2009-3-11 01:45:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
609
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

10
 楼主| 发表于 2009-3-13 20:43:18 | 只看该作者
以下引用尤莉斯于2009-3-9 11:47:03的发言:
用ObjectSpace可以获取所有对象。。。

以下引用沉影不器于2009-3-10 17:45:45的发言:
2 caller...这函数本来就只返回这三个东西...您打算从caller获得RTP内部类的代码?我觉得松本先生不那么傻...

否,只要得到那个实例就可以了,不是要代码

以下引用沉影不器于2009-3-10 17:45:45的发言:
3 CreateWindowEx我还没用纯api创建过那么复杂的窗体...是自找苦

在RM里 除了API还有别的办法创建窗体?
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 19:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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