如何确保AddFunction())导入正确的函数(考虑到该函数已经重载,使用PascalScript )?
对于exmaple,我想导入system.Random。在EngineCompile事件中,我添加了以下内容:
AddFunction( @System.Random, 'function Random: Extended;' );但是,当测试一个随机调用的脚本时,我总是得到NAN作为结果。
我的测试脚本是
Program Script;
Var
a: Single;
Check: String;
Begin
a := Random;
Check := FloatToStr(a);
ShowMessage(Check);
End.我有种强烈的感觉,PascalScript导入了另一个版本的随机。你觉得呢?
发布于 2012-05-31 14:31:56
在每个可能的重载上放置一个断点(在System.pas中,针对这个特殊情况)。执行你的剧本。看看调试器停在哪一个。
发布于 2018-04-26 12:34:03
我就是这样做的:
汇编:
psc.AddDelphiFunction('function Random(const ARange: Integer): Integer');
psc.AddDelphiFunction('function Random2: Extended');运行时:
type TRandom2 = function: Extended;
var Random2: TRandom2;
pse.RegisterDelphiFunction(@Random,'Random',cdRegister);
Random2:=Random;
pse.RegisterDelphiFunction(@Random2,'Random2',cdRegister);我强制使用了一个类型定义的“随机:扩展”。
https://stackoverflow.com/questions/10834836
复制相似问题