![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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.