你不可能做你想做的事。我认为您能管理的最接近的方法可能是使用汇编程序实现方法,跳转到外部函数:
type
TMyRec = record
public
procedure DoSomething(x, y: integer);
end;
procedure MyRecDoSomething(var Self: TMyRec; x, y: integer); external;
procedure TMyRec.DoSomething(x, y: integer);
asm
JMP MyRecDoSomething
end;
或者您可以使用内联方法:
type
TMyRec = record
public
procedure DoSomething(x, y: integer); inline;
end;
procedure MyRecDoSomething(var Self: TMyRec; x, y: integer); external;
procedure TMyRec.DoSomething(x, y: integer);
begin
MyRecDoSomething(Self, x, y);
end;
打电话时
TMyRec.DoSomething
,第一个版本的调用后面跟着跳转(使用
asm
)对于第二个版本(使用
inline
)直接对外部函数进行单个调用。