-
Здравствуйте уважаемые господа! Изучаю СОМ и возник вопрос по компилятору Д2009. Делаю так(простейший внутр.сервер). Добавил ActiveX, COM Object, прописал интерфейсы(Add и Sub). Компилирую-все нормально. Далее прописываю еще два интерфейса в этом объекте (Mult и Divide), обновляю реализацию, компилирую, вываливается список ошибок:
[DCC Error] Unit1.pas(17): E2003 Undeclared identifier: 'GetTypeInfoCount' [DCC Error] Unit1.pas(17): E2003 Undeclared identifier: 'GetTypeInfo' [DCC Error] Unit1.pas(17): E2003 Undeclared identifier: 'GetIDsOfNames' [DCC Error] Unit1.pas(17): E2003 Undeclared identifier: 'Invoke' [DCC Fatal Error] Project1.dpr(6): F2063 Could not compile used unit 'Unit1.pas'. Многое создается автоматом, а где это искать? Что нужно изменить в настройках компилятора, подскажите, если кто сталкивался. Спасибо.
-
uses comobj или activex ?
-
И то и другое. Cначала ActiveX, затем ComObj. Хотя рассматривается именно Сом-технология.
uses
Windows, ActiveX, Classes, ComObj, Project1_TLB, StdVcl;
-
Код в студию
-
Ошибка в 17-й строке.
-
Удалено модератором
-
Делаешь так:
1. File -> New -> Other -> ActiveX -> ActiveX Library 2. File -> New -> Other -> ActiveX -> Automation Object 3. В окне редактора библиотеки типов, добавляешь необходимые методы (Add, Sub, Mul, Div) 4. Жмешь refresh implementation 5. Компилируешь
Почти весь код генерится автоматически, тебе остается только прописать реализацию методов интерфейса в классе.
-
> Dzmitry.Loktseu (06.01.11 12:07) [6]
Спасибо Дмитрий! Компиляция прошла, но вывалился следующий вопрос:
При добавлении нового объекта и объявлении его методов он в юните не появляется (не смотря на рефреш). Я объявил еще один объект Circle (X,Y,R), абсолютно не связанный с предыдущим (ну экскрементирую млин), который должен рисовать окружность. В юните без изменений. Неужели в сервере можно объявить только один объект?
Научите пожалуйста или ссылочку где об этом почитать.
-
Второе: Как регистрировать сервер? Из среды IDE делается без проблем, но в результате компиляции я получаю файл .DLL. И что с ним дальше делать? Как его встроить в систему?
-
Удалено модератором
-
> Как его встроить в систему? DllRegisterSerber или воспользоваться regsvr32.exe
-
> Олег Крапивин (15.01.2011 21:40:09) [9]
regscr32 /?
-
regsvr32
-
> При добавлении нового объекта и объявлении его методов он > в юните не появляется (не смотря на рефреш).
Юнит с интерфейсом обновляется. Юнит с реализацией нетрудно обновить и руками.
> Неужели в сервере можно объявить только один объект?
Нет
|