一个关于Pascal语法的初级问题!

ttoomm 2004-08-02 10:15:11
Corba单元中的第702行(TCORBAObject对象中的Execute方法),如下,
TMethod(M).Code := Self.MethodAddress('_' + Operation);
请问“TMethod(M)”是什么意思?是强制类型转换吗?好像类型所占的内存大小不一致啊?

“TMethod”的定义如下,
TMethod = record
Code, Data: Pointer;
end;

“M”定义如下
type
TUnmarshalProc = procedure (const Input: InputStream; Cookie: Pointer) of object;
var
M: TUnmarshalProc;

...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelface 2004-08-02
  • 打赏
  • 举报
回复
确实是强制类型转换
viaboy 2004-08-02
  • 打赏
  • 举报
回复
同意楼上。
tsst 2004-08-02
  • 打赏
  • 举报
回复
TMethod(M).Code := Self.MethodAddress('_' + Operation);
这个不是强制类型转换 而是要得到地址!
TMethod(M)”得到了M的代码和数据段的指针!
htyx 2004-08-02
  • 打赏
  • 举报
回复
应该说是,用强制类型转换的方法取出,代码段和数据段的指针(因为procedure类型就是一个拥有两个指针对象的结构体,这两个指针分别指向代码段和数据段:猜的)。而TMethod(M).Code := Self.MethodAddress('_' + Operation);这一句就是在重新定向代码段。
xufenglong 2004-08-02
  • 打赏
  • 举报
回复
学习,顶!
ttoomm 2004-08-02
  • 打赏
  • 举报
回复
我顶

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧