Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо