为什么Delphi Prism抱怨系统类型不匹配?

时间:2010-02-17 03:49:58

标签: delphi compiler-errors delphi-prism oxygene delphi-prism-2010

我在Delphi Prism 2010中遇到一个奇怪的编译错误,我无法解决。该错误是在第三方程序集中定义的对象上调用方法,该对象操纵特定的图像格式。程序集本身是根据.Net 2.0 Runtime编译的。

尽管提供了正确的参数列表,但我始终收到错误,并且一系列警告消息指示参数列表不正确。 VS 2008 IDE也拒绝执行参数完成,但正确显示方法原型并允许使用Ctrl-Space添加方法。下面是编译器错误的缩写版本,用于说明问题:

错误1(PE19)没有带有这些参数的重载方法“GetTempMapOfIRSensor”

警告2(PH2)最匹配“Image.GetTempMapOfIRSensor(var rectOnSensor:System.Drawing.Rectangle; out average:System.Double; out minTempArrayIndex:System.Int32; out maxTempArrayIndex:System.Int32; desiredTempUnits: Image.TEMP_UNIT):System.Double数组“与参数1不匹配,参数为”System.Drawing.Rectangle“应为”System.Drawing.Rectangle“

警告3(PH2)最匹配“Image.GetTempMapOfIRSensor(var rectOnSensor:System.Drawing.Rectangle; out average:System.Double; out minTempArrayIndex:System.Int32; out maxTempArrayIndex:System.Int32; desiredTempUnits: Fluke.Thermography.TEMP_UNIT):System.Double数组“与参数2不匹配,参数为”System.Double“应为”System.Double“

....每个剩余参数的类似警告列表

奇怪的是编译器抱怨每个参数的类型不匹配,但错误消息显示参数类型名称是相同的(例如参数是“System.Double”应该是“System.Double”)

欢迎任何有关如何解决和解决此问题的建议。除了这一种方法之外,所讨论的类似乎在其他所有方面都能正常工作。我也能够在具有相同签名的本地类上创建一个方法,并且无错误地调用它。

更新

使用反射调用方法并且相同的参数列表正常工作。这看起来是某种编译器错误/限制。

1 个答案:

答案 0 :(得分:1)

如果此库有非var / out&的重载var或out参数与其余签名相同,关闭隐式输出/ var参数的选项并添加& var在他们需要的地方。这应该修复,否则QC条目通常会很快修复,如果它是一个错误。