Форум: "Основная";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c