我在Delphi Prism 2010中遇到了一个奇怪的编译器错误,我无法解决。该错误是调用第三方程序集中定义的对象的方法,该对象操纵特定的图像格式。程序集本身是针对.Net 2.0 Runtime编译的。为什么Delphi Prism抱怨系统类型不匹配?
尽管提供的参数正确的名单,我一直得到一个错误,并表示系列的参数列表是不正确的警告消息。 VS 2008 IDE也拒绝执行参数完成,但正确显示方法原型并允许使用Ctrl-Space添加方法。下面是编译器的错误的简化版本来说明问题:
错误1(PE19)没有重载方法“GetTempMapOfIRSensor”与这些参数
警告2(PH2)最佳匹配“图像.GetTempMapOfIRSensor(VAR rectOnSensor:System.Drawing.Rectangle;出平均:System.Double;出minTempArrayIndex:System.Int32;出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;超出平均值: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”)
任何有关如何排除故障和解决此问题的建议都是值得欢迎的。除了这一个方法外,有问题的类似乎在每个o尊重。我也可以在具有相同签名的本地类上创建一个方法,并且无错误地调用它。
更新:
使用反射和相同的参数列表调用方法正常工作。这看起来是某种编译器错误/限制。