Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.15;
Скачать: CL | DM;

Вниз

ObjComAuto.TObjectDispatch и методы с 3+ вариант-аргументами.   Найти похожие ветки 

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

Получаю интерфейс 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


 
oxffff ©   (2010-12-06 10:34) [1]

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

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


 
oxffff ©   (2010-12-06 10:52) [2]


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


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


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

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


 
oxffff ©   (2010-12-06 16:17) [4]


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


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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2012.04.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
2-1324722795
3asys
2011-12-24 14:33
2012.04.15
Получение звука с TSampleGrabber


2-1324723705
igorium
2011-12-24 14:48
2012.04.15
StringList - есть ли ограничения на размер массива?


1-1291613732
Gu
2010-12-06 08:35
2012.04.15
Шрифт заголовков груп в listview


15-1323447806
ReadOnly
2011-12-09 20:23
2012.04.15
Сюрпризы от предыдущих разработчиков


1-1291799940
Alexander_K
2010-12-08 12:19
2012.04.15
Уничтожение RDM