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

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

ObjComAuto.TObjectDispatch и методы с 3+ вариант-аргументами.


Дмитрий С ©   (2010-12-05 08:51:00) 

Получаю интерфейс IDispatch своего объекта с помощью TObjectDispatch (uses ObjComAuto), но вызвать метод с 4я аргументами типа OleVariant не получается.

Вот пример:

program Project4;

{$APPTYPE CONSOLE}
{$METHODINFO ON}

uses
 SysUtils, ObjComAuto;

type
 TMyObject = class
   published
     procedure Test4(a,b,c,d: OleVariant);
     procedure Test4_integer(a,b,c,d: Integer);
     procedure Test3(a,b,c: OleVariant);
 end;

{ TMyObject }

procedure TMyObject.Test3(a, b, c: OleVariant);
begin
 Writeln('Test3: ', a, b, c);
end;

procedure TMyObject.Test4(a, b, c, d: OleVariant);
begin
 Writeln('Test4: ', a, b, c, d);
end;

procedure TMyObject.Test4_integer(a, b, c, d: Integer);
begin
 Writeln('Test4_integer: ', a, b, c, d);
end;

procedure Main;
var
 V: OleVariant;
begin
 V := TObjectDispatch.Create(TMyObject.Create, True) as IDispatch;

 { Далее вызовы с помощью диспетчера }

 { 3 аргумента типа OleVariant - норма}
 V.Test3(1, 2, 3);

 { 4 аргумента типа integer - норма}
 V.Test4_integer(1, 2, 3, 4);

 { 4 аргемента типа OleVariant - пару секунд ожидания и
   access violation at 0x772e8c92: write of address 0x00030fd0}
 V.Test4(1, 2, 3, 4);
end;

begin
 try
   Main;
 except
   on E: Exception do
     Writeln(E.ClassName, ': ', E.Message);
 end;
 Readln;
end.


В чем проблема и как лечить?
Delphi 2010, Win7


Дмитрий С   (2010-12-06 16:27:00) [1]

Ок, спасибо, посмотрю что там.

PS. мне просто хотелось без проблем. одной строкой получить idispatch объекта и не париться всякими typelibrary и прочим.


oxffff   (2010-12-06 16:17:00) [2]


> Дмитрий С ©   (06.12.10 16:12) [3]
> Грустно это. Я так понял лучше не лезть туда, сделать не
> более трех аргументов и не заморачиваться.


Я отказался от его использования в силу багов.
Сейчас есть Enhanced RTTI.  
см. unit rtti


Дмитрий С   (2010-12-06 16:12:00) [3]

Грустно это. Я так понял лучше не лезть туда, сделать не более трех аргументов и не заморачиваться.


oxffff   (2010-12-06 10:52:00) [4]


>  у меня наблюдались сложности с использованием


А точнее конкретные баги.


oxffff   (2010-12-06 10:34:00) [5]

Нужно смотреть под отладчиком. :)

Сходу могу сказать, что у меня наблюдались сложности с использованием ObjAuto в D7, а его использует ObjComAuto.


Наверх

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