在使用 Tpaxcompiler 的时候 希望导出纯种的2个函数为脚本所用。 但是不知道为什么总是调用出错。
function sx(strs: string):bool; overload;
function sx(tid: dword): BOOL; overload;function TThread_wk.sx(tname: string):bool;
begin
form1.mmo1.Lines.Add('sx1');
end;function TThread_wk.sx(tid: dword): BOOL;
begin
form1.mmo1.Lines.Add('sx2');
end;pxc.RegisterHeader(0,'function sx(tid:dword):BOOL; overload;',@TThread_wk.sx);
pxc.RegisterHeader(0,'function sx(tname:string):BOOL; overload;',@TThread_wk.sx);然后脚本调用: sx('TEST');
程序输出: sx2 也就是他不去调用的
sx(tname: string): 而是 sx(tid: dword): 我感觉可能是 传指针 @TThread_wk.sx 的时候指针错误了。那么我如何得到 2个 sx 函数的指针呢。
解决方案 »
- 如何在运行时把数据库一字段加入到程序的ComboBox中?
- 三层的几点疑问?谢谢大家!!!
- 如何将数据库连接和访问做到一个DLL里面
- 如果不借助于RichEdit,如何从RTF格式中获取文本内容?
- 有什么好的Chart图表控件下载?
- activeform的网页在本机上打开正常,在其他机器上出现:
- 大侠帮忙!!!
- InfoPower3000里面怎么改变DBGrid列的颜色?有没有人知道?麻烦告诉我一下,谢谢
- 我在大三,看到现在多大哥大姐都去考研了,我该怎么办?大家给个建议,是考研还是提早做一些实际的项目好呢???? 另外,能否调查一下,csdn上的同志们,学历都是怎样呢?请大家来参与,谢了.
- 有哪位大侠知道Wingate 的 WRP 的原理,谢绝灌水!!!
- ADODataSet调用oracle返回数据集的存储过程的问题
- 两个 datetime 列的差别导致了运行时溢出
那么 这是 PAXCOMPILER 的BUG?
SysUtils, Windows;type
Tfoo = class
public
function SX(X: string): BOOL; overload;
function SX(X: DWORD): BOOL; overload;
end;{ Tfoo }function Tfoo.SX(X: string): BOOL;
begin
Writeln('SX(X: string)');
Result := True;
end;function Tfoo.SX(X: DWORD): BOOL;
begin
Writeln('SX(X: DWORD)');
Result := False;
end;procedure ShowAddr;
type
TSXStr = function (X: string): BOOL of object;
TSXDW = function (X: DWORD): BOOL of object;
TCallee = procedure;
var
mtStr, mtDW : TMethod;
begin
with Tfoo(nil)do
begin
TSXStr(mtStr) := SX;
TSXDW(mtDW) := SX;
end;
Writeln(Format('[%p]'#9'function Tfoo.SX(X: string): BOOL', [mtStr.Code]));
Writeln(Format('[%p]'#9'function Tfoo.SX(X: DWORD): BOOL', [mtDW.Code]));
TCallee(mtStr.Code)();
TCallee(mtDW.Code)();
end;begin
ShowAddr;
Readln;
end.目前 d2009+ 是取不了 class procedure/function (...):T; overload; static; 的地址的,不知道这个 bug 在 d2011 中是否能得到修正。