Procedure of object如何改变_self?
Procedure of object how to change the _self?
我有
Type
TProcOfObject = Procedure of Object;
var
MyProc: TProcOfObject;
现在如果我这样做
MyProc := MyObject.MyProc
那么当我调用 MyProc 时,self 将等于 MyObject(我还不完全了解 self 在 MyProc 中的存储位置)。他们是用不同于 MyObject for Self 的另一个值调用 myProc 的方法吗?
I do not yet fully understand where self is stored in MyProc
一个方法指针由TMethod
记录表示,它包含2个指针作为成员——Data
指向Self
对象,Code
指向方法代码的开头。
当在 compile-time 处将方法指针作为函数调用时,编译器输出执行 Code
的代码生成,传入 Data
作为 Self
参数。
Is their a way to call myProc with another value than MyObject for Self ?
您可以type-cast指向TMethod
的方法指针来访问其内部指针,例如:
var
MyProc: TProcOfObject;
...
TMethod(MyProc).Data := ...; // whatever value you want Self to be
TMethod(MyProc).Code := ...; // whatever function you want to call
...
MyProc();
我有
Type
TProcOfObject = Procedure of Object;
var
MyProc: TProcOfObject;
现在如果我这样做
MyProc := MyObject.MyProc
那么当我调用 MyProc 时,self 将等于 MyObject(我还不完全了解 self 在 MyProc 中的存储位置)。他们是用不同于 MyObject for Self 的另一个值调用 myProc 的方法吗?
I do not yet fully understand where self is stored in MyProc
一个方法指针由TMethod
记录表示,它包含2个指针作为成员——Data
指向Self
对象,Code
指向方法代码的开头。
当在 compile-time 处将方法指针作为函数调用时,编译器输出执行 Code
的代码生成,传入 Data
作为 Self
参数。
Is their a way to call myProc with another value than MyObject for Self ?
您可以type-cast指向TMethod
的方法指针来访问其内部指针,例如:
var
MyProc: TProcOfObject;
...
TMethod(MyProc).Data := ...; // whatever value you want Self to be
TMethod(MyProc).Code := ...; // whatever function you want to call
...
MyProc();