一、提出问题
在将json-rpc中JSONObject翻译成Delphi代码的时候,我碰到以下语句:
1 Method[] methods = klass.getMethods(); 2 … 3 Method method = methods[i]; 4 … 5 if (key.length() > 0 && 6 Character.isUpperCase(key.charAt(0)) && 7 method.getParameterTypes().length == 0) { 8 … 9 }10
很明显,这里是通过反射得到类中包含的函数的信息及函数所包含的参数信息。当我在Delphi2009中兴奋的引入ObjAuto文件时,我沮丧的发现,ObjAuto中只提供了GetMethods方法,没有提供类似于Java中getParameterTypes方法的GetParams方法。没关系,Delphi的SDK不提供,我们就根据VMT表,自己写一个GetParams函数出来!
二、分析问题
我们知道,在Delphi中对象是在堆中存放的。而对象在堆中存放的前四个字节组成一个地址,这个地址指向的是此对象所对应的VMT所在堆中的地址。VMT可以理解为Delphi对象所对应的类在堆中存放的组成形式的描述,它是类的结构,不包含对象的数据。有关VMT的更多信息,请百度一下、Google一下,或查看以下两篇文章:
1、Delphi中类的运行期TypeInfo信息结构说明
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索delphi
, 对象
, 函数
, 方法
, json-rpc
, 地址
, 信息
, delphi问题
, 地址存放问题
vmt
delphi2009下载、delphi 2009、delphi 2009 破解、delphi2009 序列号、delphi2009 tpngimage,以便于您获取更多的相关知识。