2

考虑到函数重载,我如何确定 PascalScript 导入了正确的函数(使用AddFunction() )?

例如,我想导入 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 导入了其他版本的random。你怎么看 ?

4

2 回答 2

1

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

于 2012-05-31T14:31:56.390 回答
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);

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

于 2018-04-26T12:34:03.633 回答