Возможно ли, чтобы Delphi автоматически генерировал код поддержки событий для импортированной библиотеки типов OLE/COM?

Я пытаюсь сгенерировать _TLB единицы импорта для Outlook 2003, 2007 и 2010 (а также других серверов OLE), аналогичных тем, которые входят в комплект поставки Delphi для Outlook 2000 и 2002. Однако я не смог заставить импортер библиотеки типов также генерировать код для захвата событий с серверов OLE, который находится в комплектных модулях. Параметр «Создать оболочки компонентов» создает оболочки только для серверов, которые могут быть созданы напрямую, но не для объектов, которые возвращаются только с помощью методов других объектов, таких как TInspector, TExplorer и т. д.

Я мог бы, конечно, сам написать код обработки событий, но это было бы очень утомительной работой.

Кто-нибудь знает, можно ли настроить импортер, содержащийся в Delphi 2010 (tlibimp.exe), для генерации этого кода? Я действительно сомневаюсь, что когда-то Borland создавала существующие модули Outlook2000.pas и OutlookXP.pas вручную...

Может быть, есть какие-то другие инструменты, которые могут это сделать?


person Oliver Giesen    schedule 30.08.2010    source источник
comment
Оливер, проверьте эту ссылку chrisbensen.blogspot. ком/2007/07/   -  person RRUZ    schedule 30.08.2010
comment
@RRUZ: Спасибо. Я знаю эту статью. Собственно, это и было моей отправной точкой. Но, к сожалению, нет информации о создании оберток событий, особенно для не создаваемых серверов...   -  person Oliver Giesen    schedule 31.08.2010


Ответы (1)


Хороший вопрос! Я никогда не замечал, что эти компоненты не были созданы (я использую только Word_TLB). Поиграв немного с tlibimp, я обнаружил, что вам нужен флаг -Yc+. Вероятно, все флаги игнорирования включены по умолчанию.

NB: это на Delphi 7 с версией tlibimp.exe 7.0.4.453.

person The_Fox    schedule 31.08.2010
comment
Спасибо, но с этим не повезло, к сожалению. Я получил еще два класса (TOutlookApplication (включая события!) и TDoNotUseMeFolder (?!)) с помощью опции -Ya+, но это все... В сгенерированном файле все еще нет TInspector или TExplorer... :( - person Oliver Giesen; 31.08.2010
comment
Кстати: в справке командной строки для tlibimp.exe указаны состояния по умолчанию для каждой опции, и в соответствии с этим (также подтверждено моими тестами) -Yc уже включено (т.е. +) по умолчанию. - person Oliver Giesen; 31.08.2010
comment
@Oliver Giesen: я использовал tlibimp.exe из Delphi 7. Это параметры по умолчанию, когда я использую /?: -C- -P+ -Ic- -Ip- -Ha+ -Hr+ -Hs+ -Cw- -Ps+ -Pt- - O+ -R+ -XM- -W+ -Wc+ -Yc- -Yh -Yp- -Yr- -Ya- (параметры C++ по умолчанию не включены), поэтому я изменил только параметр -Yc- на -Yc+, и это сработало для меня. - person The_Fox; 31.08.2010
comment
@The_Fox: Какой номер версии сообщил ваш tlibimp.exe? У меня 12.16580 (из Delphi 2010), а значения по умолчанию — -Ha+ -Hs+ -Hr+ -Ps+ -Pt- -O+ -R+ -XM- -W+ -Wc+ -Ya- -Yh- -Yc+ -Yp- -Yr- (я пропустил специфичные для C++). У меня тоже Delphi 2007 и 2009. Я попробую. Если они могут это сделать, то вся эта проблема кажется ошибкой в ​​более новой версии tlibimp.exe... Кстати: для какой версии Outlook вы создали _TLB.pas? Сейчас пробую 2010... - person Oliver Giesen; 31.08.2010
comment
Моя версия: 7.0.4.453. Я создал оболочку для Outlook 2007. Вы пытались отключить все параметры игнорирования? Итак, -Yc+ -Yh+ -Yp+ -Yr+ -Ya+, или, может быть, их комбинация. - person The_Fox; 31.08.2010
comment
Я нашел компакт-диск с Delphi 7 в старой коробке и смог запустить tlibimp.exe на нем, не устанавливая его целиком, и с этим он работает! :) Большое спасибо! Используя -Ya+ (что подразумевает -Yc+), я получил нужные мне единицы измерения. Не могли бы вы добавить информацию о Delphi 7 в свой ответ, чтобы я мог ее принять? Таким образом, это определенно проблема с более новой версией импортера. Отправляйтесь в КК... - person Oliver Giesen; 31.08.2010