Вниз
Скачать: CL | DM;

ProgIdToClassID ()   Найти похожие ветки 

← →
kblc ©   (2005-10-15 16:25) [0]

Уважаемые мастера, подскажите мне пожалуйста, почему такое возможно:
 ClassIdToProgID(Class_Server) возвращает App.Server, а
 ProgIDToClassID("App.Server") возвращает EOleException ("Недопустимая строка с указанием класса") (!!!!)
 Как такое вообще возможно? (Эта штука у меня случилась на другом компе, т.е. не на том где ведётся разработка)

 П.С. Вот код:

 try
   CoInitialize(nil);
   MainServer:=CreateComObject(ProgIdTpClassID("App.Server")) AS IAppServer;
   ...
 except
   on E: exception do
   ...
 end;
...


← →
kblc ©   (2005-10-15 23:17) [1]

Уважаемые мастера, неужели никто не знает в чём тут дело?


← →
DrPass ©   (2005-10-16 02:22) [2]

Думаю, дело в том, что
HRESULT CLSIDFromProgID(
 LPCOLESTR lpszProgID,
 LPCLSID pclsid
);
вроде как принимает ProgID в виде обычной строки, а
function ProgIDToClassID(const ProgID: string): TGUID;
begin
 OleCheck(CLSIDFromProgID(PWideChar(WideString(ProgID)), Result));
end;
почему-то пытается подсунуть ей юникод


← →
kblc ©   (2005-10-16 10:42) [3]

но разве делфи сама не передаёт WideString когда я делаю так: ProgIDToClassID("App.Server")?
 Я совсем уже сбился с ног... такого ведь в принципе не должно быть?


← →
Lamer@fools.ua ©   (2005-10-16 12:26) [4]

>>DrPass ©   (16.10.05 02:22) [2]

typedef WCHAR OLECHAR;
typedef /* [string] */ OLECHAR *LPOLESTR;
typedef /* [string] */ const OLECHAR *LPCOLESTR;


← →
DiamondShark ©   (2005-10-16 14:10) [5]

Криво зарегемтрирован класс


← →
kblc ©   (2005-10-16 14:19) [6]

regsrv32.exe App.Serev.dll
Как он может быть Криво зарегестрирован?
Можно об этом попордробнее?
И ещё тогда такой вопрос:  Как регистрируется класс, кроме как записью в реестре? (HKCR\CLSID\{GUID})


← →
kblc ©   (2005-10-16 17:25) [7]

Неужели никто не подскажет?


← →
DrPass ©   (2005-10-16 17:46) [8]


> Lamer@fools.ua ©   (16.10.05 12:26) [4]

А в каком хедере оно описано? Я так и не нашел


← →
Lamer@fools.ua ©   (2005-10-16 18:15) [9]

WTypes.h

Кстати, я обманул. Там условие ещё стоит:
#if defined(_WIN32) && !defined(OLE2ANSI)


← →
kblc ©   (2005-10-16 19:54) [10]

кхм... а мне то что-нибудь подскажете?


← →
kblc ©   (2005-10-16 22:34) [11]

> DiamondShark ©   (16.10.05 14:10) [5]
Так как мне его "правильно" зарегестрировать?


← →
DiamondShark ©   (2005-10-16 23:17) [12]


>   Как регистрируется класс, кроме как записью в реестре?
>  (HKCR\CLSID\{GUID})

Ещё записью
HKCR\<ProgID>\CLSID



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.024 c
3-1127827263
vishnia
2005-09-27 17:21
2005.11.06
Index is out of date - почему?


4-1125653799
Piero
2005-09-02 13:36
2005.11.06
Сигналы CommPortа


3-1127119796
worldmen
2005-09-19 12:49
2005.11.06
SQL для 3-х таблиц ?


2-1129462287
STEEL
2005-10-16 15:31
2005.11.06
Перевод курсора на новую строку


14-1129106888
Андрей Жук
2005-10-12 12:48
2005.11.06
Нынешняя молодежь - самая образованная в истории человечества




   Наверх