Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Позднее связывание в COM сервере 
:(
    Опции темы
lexaltd
Дата 2.11.2013, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 4.10.2008

Репутация: нет
Всего: нет



Сразу скажу я в этом не сильно разбираюсь - так что сильно не пинайте.

 Смотрите есть такой интерфейс

Код

 IWordConnection = interface(IDispatch)
    ['{8408CE3E-E487-479A-B4DA-193A0E554EB0}']
    function Get_Item: OleVariant; safecall;
    procedure Set_Item(Value: OleVariant); safecall;
    function Get_Value: WideString; safecall;
    procedure Set_Value(const Value: WideString); safecall;
    procedure Open(const Val: WideString); safecall;
    property Item: OleVariant read Get_Item write Set_Item;
    property Value: WideString read Get_Value write Set_Value;
  end;


есть такой класс

Код

  TWordConnection = class(TAutoObject,IDispatch, IWordConnection)
  protected
    function Get_Item: OleVariant; safecall;
    function Get_Value: WideString; safecall;
    procedure Set_Item(Value: OleVariant); safecall;
    procedure Set_Value(const Value: WideString); safecall;
    procedure Open(const Val: WideString); safecall;
      { IDispatch }
    function GetIDsOfNames(const IID: TGUID; Names: Pointer;
      NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; virtual; stdcall;
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; virtual; stdcall;
  end;


Можно ли при помощи метода Позднего связывания(function GetIDsOfNames, Invoke) сделать такую конструкцию

Код

V := CreateOleObject('ltd.WordConnection');
V.Item.Value := 10;


Интересует вот эта строка 

Код

V.Item.Value := 10;


Item - тип OleVariant и после него вызвать property Value этого же класса что и Item?

 Я пробывал в Item заходит, а дальше вываливается с ошибкой, даже в GetIDsOfNames не заходит.


P.S  Есть такое в interface Excel
Код

ExcelRange = dispinterface
property Cells: ExcelRange readonly dispid 238;
property Item[RowIndex: OleVariant; ColumnIndex: OleVariant]: OleVariant dispid 170;
property Value: OleVariant dispid 6;

Такой код работает при том что Item OleVariant и все эти property принадлежат к interface ExcelRange
Код

V.Cells.Item[1,1].Value := 10;



Это сообщение отредактировал(а) lexaltd - 3.11.2013, 10:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1012 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.