![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProgIdToClassID () [WinXP]
kblc © (2005-10-15 16:25:00)Уважаемые мастера, подскажите мне пожалуйста, почему такое возможно:
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;
...
DiamondShark (2005-10-16 23:17:00) [1]
> Как регистрируется класс, кроме как записью в реестре?
> (HKCR\CLSID\{GUID})
Ещё записью
HKCR\<ProgID>\CLSID
kblc (2005-10-16 22:34:00) [2]> DiamondShark © (16.10.05 14:10) [5]
Так как мне его "правильно" зарегестрировать?
kblc (2005-10-16 19:54:00) [3]кхм... а мне то что-нибудь подскажете?
Lamer@fools.ua (2005-10-16 18:15:00) [4]WTypes.h
Кстати, я обманул. Там условие ещё стоит:
#if defined(_WIN32) && !defined( OLE2ANSI)
DrPass (2005-10-16 17:46:00) [5]
> Lamer@fools.ua © (16.10.05 12:26) [4]
А в каком хедере оно описано? Я так и не нашел
kblc (2005-10-16 17:25:00) [6]Неужели никто не подскажет?
kblc (2005-10-16 14:19:00) [7]
regsrv32.exe App.Serev.dll
Как он может быть Кривозарегестрирован?
Можно об этом попордробнее?
И ещё тогда такой вопрос: Как регистрируется класс, кроме как записью в реестре? (HKCR\CLSID\{GUID})
DiamondShark (2005-10-16 14:10:00) [8]Криво зарегемтрирован класс
Lamer@fools.ua (2005-10-16 12:26:00) [9]>> DrPass © (16.10.05 02:22) [2]
typedef WCHAROLECHAR;
typedef /* [string] */ OLECHAR *LPOLESTR;
typedef /* [string] */ const OLECHAR *LPCOLESTR;
kblc (2005-10-16 10:42:00) [10]но разве делфи сама не передаёт WideString когда я делаю так:
ProgIDToClassID('App.Server')?
Я совсем уже сбился с ног... такого ведь в принципе не должно быть?
DrPass (2005-10-16 02:22:00) [11]Думаю, дело в том, что
HRESULT CLSIDFromProgID(
LPCOLESTR lpszProgID,
LPCLSID pclsid
);
вроде как принимает ProgID в виде обычной строки, а
function ProgIDToClassID(const ProgID: string): TGUID;
begin
OleCheck(CLSIDFromProgID(PWideChar(WideString(ProgID)), Result));
end;
почему-то пытается подсунуть ей юникод
kblc (2005-10-15 23:17:00) [12]Уважаемые мастера, неужели никто не знает в чём тут дело?