Почему Delphi Prism жалуется на несоответствие типов систем?

Я столкнулся со странной ошибкой компилятора в Delphi Prism 2010, которую не могу устранить. Ошибка при вызове метода для объекта, определенного в сторонней сборке, которая манипулирует специализированным форматом изображения. Сама сборка была скомпилирована для среды выполнения.Net 2.0.

Несмотря на предоставление правильного списка параметров, я постоянно получаю сообщение об ошибке и ряд предупреждающих сообщений, указывающих, что список параметров неверен. IDE VS 2008 также отказывается выполнять завершение параметра, но корректно показывает прототип метода и позволяет добавлять метод с помощью Ctrl-Space. Ниже приведена сокращенная версия ошибок компилятора для иллюстрации проблемы:

Ошибка 1 (PE19) Нет перегруженного метода "GetTempMapOfIRSensor" с этими параметрами

Предупреждение 2 (PH2) "Лучшее соответствие"Image.GetTempMapOfIRSensor(var rectOnSensor: System.Drawing.Rectangle; из среднего: System.Double; out minTempArrayIndex: System.Int32; из maxTempArrayIndex: System.Int32; requiredTempUnits: 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; из maxTempArrayIndex: System.Int32; требуемый TempUnits: Fluke.Thermography.TEM).: массив System.Double"не соответствует параметру 2, параметр"System.Double"должен быть"System.Double"

.... список похожих предупреждений для каждого оставшегося параметра

Странно то, что компилятор жалуется на несоответствие типов для каждого параметра, но в сообщении об ошибке указывается, что имена типов параметров совпадают (например, параметр "System.Double" должен быть "System.Double").

Любые предложения о том, как устранить неполадки и решить эту проблему, будут приветствоваться. Рассматриваемый класс, кроме этого одного метода, кажется, работает хорошо во всех других отношениях. Я также могу создать метод в локальном классе с той же сигнатурой и вызвать его без ошибок.

Обновить:

Вызов метода с использованием отражения и того же списка параметров работает правильно. Это похоже на какую-то ошибку / ограничение компилятора.

1 ответ

Если в этой библиотеке есть перегрузки для параметров не-var/out & var или out с той же сигнатурой, отключите опцию для неявных параметров out/var и добавьте & var в тех местах, где они нужны. Это должно исправить, иначе запись QC обычно исправляется довольно быстро, если это ошибка.

Другие вопросы по тегам