关于delphi的反射问题(100)

  • 主题发起人 主题发起人 apiao
  • 开始时间 开始时间
A

apiao

Unregistered / Unconfirmed
GUEST, unregistred user!
看了很多关于delphi2009的介绍,提到最多的新特性就是反射。问题是,很多介绍delphi2009的反射问题都提到反射是可以获取public中的属性信息的,但是所有的给出的例子都有意无意的回避了对属性的获取。自己写代码测试,发现并不能获取public中的属性信息,获取public中的方法是没有问题的。问,delphi2009中的反射机制到底能否获取public中的属性信息。如果能,请给出例子。如果真能做到.net那种反射效果,delphi会更上一个层次的。
 
同楼主,想知道前段时间想用反射,结果发现和楼主同样的问题,最后只好把相关的属性和方法转移到published,用RTTI解决
 
看来这个问题还是无解,把问题提前。
 
还没用过 关注.............
 
目前得到的结论是,delphi2009就这样了。希望寄托在delphi2010,其中有个rtti_browser的demo。还没仔细看,似乎能得到类的全部信息。甚至于私有的field。呵呵,是不是有点过头了。研究下再回复。
 
转Delphi2010强化的反射2009-09-02 13:18很多人可能都发现了,Delphi2010编译后的程序体积非常大,一个空的窗体居然达到接近800K。这些多出来的体积其实就是运行时信息,使用这些信息,我们可以轻松的获取到有关的类内容,并在不知情的情况下使用它们。这个特性对于实现多层的架构有着非同一般的意义。Delphi2010提供了一个Rtti单元,用于实现运行时信息的Get, Set。在其中能找到一个名为TRttiContext的Record,它就是本文的主角了。TRttiContext提供了一个静态的构造方法,也就是说,我们无需手工的创建它。新建一个窗体,然后在public下写入 Ref: TRttiContext
即可完成声明,以后就能直接使用了。(此处的Ref可以按需求修改成任何的合法变量名)在此我写了一个类,用来做测试,如下(Delphi2010已不再要求用{$MethodInfo}来标识用于反射的信息)http://hi.baidu.com/rarnu/blog/item/880c68810337f3d1bc3e1e9e.html
 
要跟.NET同样的反射你就去用.NET了.没有反射说功能支持太差.等支持了又说文件太大了.没有UNICODE时说国际化不好做.有了UNICODE了又说原来的程序不好移植.
 
UNICODE非常差,一个字母非要二个二个字节表示,完全没有必要
 
就是问题讨论而已,哪来的唧唧歪歪的。。。有意思么!
 
在英语国家,UNICODE确实没什么必要。但是ASCII的包容确实有限,非英语的国家的文字怎么办?对于多语言混合使用的程序,你就知道UNICODE是多么的必要了。
 
用ASCII码也可以表示汉字,说不定有更好的方式来表示多国语言。
 
to roadexplorer:如果你做过多语言版本的软件,你就会明白UNICODE多么重要。举个例子:在中文操作系统显示日文韩文可以不用UNICODE都可以实现,只要修改相应的语言代码页即可。如果有这样的要求,要求你在中文的操作系统下,同一软件混合显示中文,日文韩文,你怎么处理?同时还要求对中文,日文韩文进行编辑呐?答案只有UNICODE!
 
后退
顶部