在PascalScript中导入重载函数

时间:2012-05-31 13:41:38

标签: delphi overloading pascalscript

如果考虑到函数重载,我怎么能确定PascalScript导入正确的函数(使用 AddFunction())?

对于exmaple我想导入system.Random。 在EngineCompile事件中,我添加了这个:

AddFunction( @System.Random, 'function Random: Extended;' );

但是在测试调用 random 的脚本时,我总是得到 NAN

我的测试脚本是

Program Script;
Var
  a: Single;
  Check: String;
Begin
  a := Random;
  Check := FloatToStr(a);
  ShowMessage(Check);
End.

我强烈感觉PascalScript导入随机的其他版本。 你觉得怎么样?

2 个答案:

答案 0 :(得分:1)

在每个可能的重载上放置一个断点(对于这种特殊情况,在 System.pas 中)。执行你的脚本。查看调试器停在哪一个。

答案 1 :(得分:0)

我就这样做了:

编译:

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);

我强制使用类型定义“随机:扩展”。