Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1323919290
Я
2011-12-15 07:21
2012.04.15
на чем делать гуи


2-1324556014
igorium@list.ru
2011-12-22 16:13
2012.04.15
Можно ли узнать где произошла ошибка на чужом компе?


15-1323693258
stas
2011-12-12 16:34
2012.04.15
подключение через VPN


2-1324499887
Антоха_М
2011-12-22 00:38
2012.04.15
Как видоизменить StringGrid?


2-1324408115
Драйвер мыши
2011-12-20 23:08
2012.04.15
Способы программного управления мышью и клавиатурой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский