COM w Delphi - inicjalizacja klas

0

Posiadam Delphi 5, w nim chciałem napisać kontrolkę COM do programu X według Rozdział 13.

W programie X do kontrolki COM odwołuje się poprzez GUID.

W przypadku Offica 2007, są dwie kontrolki, jedna do obsługi Worda {00020905-0000-0000-C000-000000000046} i druga do obsługi Excela {00020813-0000-0000-C000-000000000046}.

W programie X jest tak, że określa się nazwę interfejsu kontrolki i potem wywołuje się metody tego interfejsu.

Miałem do czynienia z jedną kontrolką COM napisaną w Delphi, która też działa z tym programem (posiadam plik DLL z tą kontrolką, ale nie posiadam kodu źródłowego).

Z moją kontrolką jest o tyle problem, że program X widzi kontrolkę i jego GUID, widzi interfejs i metody, ale przy próbie wywołania jakiejkolwiek, pokazuje się komunikat z Windows "Niezainicjowana klasa COM (tutaj nazwa interfejsu) Error 2724". Gdzie robię błąd?

Załączam kod źródłowy, z którym jest problem.

0

zarejestrowałeś dll przez regsvr32?

0
Misiekd napisał(a)

zarejestrowałeś dll przez regsvr32?

Tak. Odpalam konsole jako admin (przy normalnym uruchomieniu nie rejestruje się) i wpisuję polecenie:
regsvr32 C:\Katalog\Plik.dll
Potem robię próbę działania i wyrejestrowuję poleceniem:
regsvr32 /u C:\Katalog\Plik.dll

Jakbym nie zarejestrował, to COMa w ogóle program by nie widział, ale jest tak, że program widzi COMa, widzi interfejsy i metody, tylko problem jest z wywoływaniem metod.

System widzi kontrolkę jako "Project1" o GUID = {B04BDBF7-7E10-4B5E-B98D-B4165E531345}

1 użytkowników online, w tym zalogowanych: 0, gości: 1