Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 无效的变量操作_Delphi_Delphi 2010 - Fatal编程技术网

Delphi 无效的变量操作

Delphi 无效的变量操作,delphi,delphi-2010,Delphi,Delphi 2010,使用Windows764和Delphi2010 我们正在调用一个第三方函数:EFTTerminal.Purchase1,0,它从EFTPOS终端购买1美元 无论何时调用它,我们总是得到无效的变量操作 EFTTerminal.Purchase1,0。我相信这些参数都是变量类型,如下所示 EFTTerminal.Purchase(1,0) EFTTerminal.Purchase('1','0') EFTTerminal.Purchase(1.5,1.5) 但所有的错误都是一样的 当我打破它是在这

使用Windows764和Delphi2010

我们正在调用一个第三方函数:EFTTerminal.Purchase1,0,它从EFTPOS终端购买1美元

无论何时调用它,我们总是得到无效的变量操作

EFTTerminal.Purchase1,0。我相信这些参数都是变量类型,如下所示

EFTTerminal.Purchase(1,0)
EFTTerminal.Purchase('1','0')
EFTTerminal.Purchase(1.5,1.5)
但所有的错误都是一样的

当我打破它是在这个过程中的变型单位

procedure VarInvalidOp;
begin
raise EVariantInvalidOpError.Create(SInvalidVarOp);
end;
第三方不能/不会给我们源代码,因此我们无法进一步跟踪

有人能给我一些关于如何解决这个问题的线索吗?

全部修复。 这是我代码中对象初始化的问题。
感谢您的建议,Remy

仅仅因为接受了多种输入值类型并不一定意味着使用了变体。对于多个数据类型,Purchase可能只是过载。您必须知道定义才能调用它,那么购买实际上是如何声明的呢?您不需要完整的源代码就可以获得这些信息。EFTTerminal实际上声明为什么?它是一个类、一个DLL、一个COM对象……吗?当调用VarInvalidOp时,调试器中的完整调用堆栈是什么样子的?谢谢Remy,我已经向第三方请求了此函数的声明。第三方是否已经做了任何事来帮助您解决此问题?这是他们的图书馆。如果他们不能帮助你,我建议你再找一个EFTPOS库,甚至直接编写你自己的ETFPOS通信代码。EFTPOS规范可以从终端供应商处获得——例如,我从PC-EFTPOS私人有限公司得到一个这样的规范。这并不是一个真正的答案,也不是一个对未来访问者有用的问题。你应该删除。