У меня есть DLL С#, которая использует класс XslCompiledTransform для манипуляций с xml. Я украл С++/CLI-оболочку для С# DLL.
При использовании Delphi 5 для реализации оболочки С++/CLI я получаю системную арифметическую ошибку. Вот объявление Delphi 5:
procedure XsltMethod(XmlPath, XsltPath: PWideChar); cdecl; external 'ahma.dll';
Тело открытого метода С# создает новый объект XslCompiledTransform, и исключение появляется сразу, когда вновь созданный объект использует свой метод load. Например:
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(XsltFile);
Как упоминалось ранее, исключение, выведенное из .NET DLL, представляет собой системное арифметическое исключение. Это происходит только при вызове из исполняемого файла Delphi.
Я думаю, я должен упомянуть, что вызов метода load снова работает отлично. Таким образом, перехват исключения и запуск метода для второго "прохода" действует как блокировщик всплывающих окон. Но для исключений, конечно.
Случайные мысли: