У нас была небольшая проблема, когда мы потеряли некоторый исходный код для очень старого компонента ActiveX, который у нас был. У нас есть программа Delphi7, которая вызывает компонент Active X. Это что-то вроде мотра и не может быть изменено слишком сильно. Однако некоторые функции в компоненте Active X необходимо обновить. Поскольку мы переместили наши приложения на C #, было решено переделать ActiveX как библиотеку классов C #.
У меня есть базовая библиотека классов C #, работающая над подтверждением этой концепции. Я могу взломать GUID и реестр, чтобы он выглядел как старый. Если я посмотрю на тип lib для старого и нового, они в основном одинаковы. Пара небольших различий, но не все, что я мог бы подумать, будет проблемой.
Теперь, насколько я понимаю, есть три способа использования новой библиотеки классов:
Позднее связывание с поиском ProgId. Это работает нормально.
Импорт библиотеки типов. (Проект | Библиотека типов импорта) Это работает нормально.
Импорт в качестве компонента ActiveX. Это создает файл TLB. Это не работает Когда я иду, чтобы создать компонент, я получаю «Такой интерфейс не существует». Класс загружается в точку, но не полностью.
Теперь, к сожалению, программа Delphi использует вариант 3. Поэтому я должен попытаться заставить мою библиотеку классов работать в таких условиях. Есть идеи, как мне пройти эту ошибку? Я гуглил и нашел несколько ссылок, но ничего не говорит о том, в чем проблема.
Второй вопрос. Я должен знать, как это сделать, так как я сделал это однажды, но я, кажется, ошибся. Когда я нахожусь в Delphi, я делаю компонент Import ActiveX для создания файла TLB. Теперь первая сгенерированная библиотека классов C # отображается в списке элементов управления ActiveX, и я могу создать для нее модуль. Но я создал еще одну более простую библиотеку классов для целей тестирования и, черт побери, могу ли я заставить библиотеку отображаться в списке элементов управления ActiveX и поэтому не могу ее импортировать.
Create Unit для компонента Active X генерирует другой формат TLB.pas в соответствии с форматом библиотеки типов импорта и его ActiveX, который мне требуется.