我在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尊重。我也可以在具有相同簽名的本地類上創建一個方法,並且無錯誤地調用它。
更新:
使用反射和相同的參數列表調用方法正常工作。這看起來是某種編譯器錯誤/限制。