Конференция "Начинающим" » COM-технология и Дельфи 2009
 
  • Олег Крапивин (03.12.10 20:30) [0]
    Здравствуйте уважаемые господа! Изучаю СОМ и возник вопрос по компилятору Д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'.
    Многое создается автоматом, а где это искать?
    Что нужно изменить в настройках компилятора, подскажите, если кто сталкивался. Спасибо.
  • clickmaker © (13.12.10 11:18) [1]
    uses comobj или activex ?
  • Олег Крапивин (24.12.10 15:19) [2]
    И то и другое. Cначала ActiveX, затем ComObj. Хотя рассматривается именно Сом-технология.

    uses
     Windows, ActiveX, Classes, ComObj, Project1_TLB, StdVcl;

  • _Юрий (24.12.10 21:56) [3]
    Код в студию
  • KSergey © (25.12.10 17:11) [4]
    Ошибка в 17-й строке.
  • ReLock © (05.01.11 22:44) [5]
    Удалено модератором
  • Dzmitry.Loktseu (06.01.11 12:07) [6]
    Делаешь так:

    1. File -> New -> Other -> ActiveX -> ActiveX Library
    2. File -> New -> Other -> ActiveX -> Automation Object
    3. В окне редактора библиотеки типов, добавляешь необходимые методы (Add, Sub, Mul, Div)
    4. Жмешь refresh implementation
    5. Компилируешь

    Почти весь код генерится автоматически, тебе остается только прописать реализацию методов интерфейса в классе.
  • Олег Крапивин (15.01.11 21:18) [7]

    > Dzmitry.Loktseu   (06.01.11 12:07) [6]

    Спасибо Дмитрий! Компиляция прошла, но вывалился следующий вопрос:

    При добавлении нового объекта и объявлении его методов он в юните не появляется (не смотря на рефреш).
    Я объявил еще один объект Circle (X,Y,R), абсолютно не связанный с предыдущим (ну экскрементирую млин), который должен рисовать окружность.
    В юните без изменений.
    Неужели в сервере можно объявить только один объект?

    Научите пожалуйста или ссылочку где об этом почитать.
  • Олег Крапивин (15.01.11 21:29) [8]
    Второе:
    Как регистрировать сервер?
    Из среды IDE делается без проблем, но в результате компиляции я получаю файл .DLL.
    И что с ним дальше делать? Как его встроить в систему?
  • Олег Крапивин (15.01.11 21:40) [9]
    Удалено модератором
  • sniknik © (15.01.11 22:00) [10]
    > Как его встроить в систему?
    DllRegisterSerber
    или воспользоваться regsvr32.exe
  • Anatoly Podgoretsky © (15.01.11 22:03) [11]
    > Олег Крапивин  (15.01.2011 21:40:09)  [9]

    regscr32 /?
  • Anatoly Podgoretsky © (15.01.11 22:07) [12]
    regsvr32
  • _Юрий (16.01.11 11:26) [13]

    > При добавлении нового объекта и объявлении его методов он
    > в юните не появляется (не смотря на рефреш).


    Юнит с интерфейсом обновляется. Юнит с реализацией нетрудно обновить и руками.

    > Неужели в сервере можно объявить только один объект?


    Нет
 
Конференция "Начинающим" » COM-технология и Дельфи 2009
Есть новые Нет новых   [134430   +0][b:0][p:0.001]