Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
ВнизОшибка вызова метода COM-сервера. Найти похожие ветки
← →
DmitryNM (2002-08-31 18:38) [0]Есть внутренний COM-сервер. У него есть метод Convert:
function TAreaUnitConverter.Convert(Quantity: Double; InUnit,
OutUnit: SYSINT): Double;
Вобщем - функция как функция.
Сервер создается нормально:
var V:Variant;
V:=CreateOleObject(UnitSrv.AreaUnitConverter);
Однако при вызове этого метода:
V.Convert(1.0,0,1);
выдается ошибка "Invalid Callee"
И это при том, что если создавать этот же сервер по другому:
var I:IAreaUnitConverter;
I:=CoAreaUnitConverter.Create;
Метод I.Convert(1.0,0,1)
выполняется.
Также ошибка возникает при создании сервера через интерфейс диспетчирования:
var DI:IAreaUnitConverterDisp;
DI:=CoAreaUnitConverter.create as IAreaUnitConverterDisp;
Подскажите - в чем ошибка?
(Пример взят из книги)
← →
Dimk (2002-08-31 22:31) [1]Может IAreaUnitConverter не является disp интерфейсом?
Если
var V:Variant;
V:=CreateOleObject(UnitSrv.AreaUnitConverter);
то как я понимаю V присваивается указатель на IDispatch
← →
DmitryNM (2002-09-02 11:12) [2]Нет - IAreaUnitConverter является Disp-интерфейсом.
Вот как объявлено в tlb-файле:
IAreaUnitConverter = interface(IDispatch)
["{019B9D28-D5EE-4952-91C5-D39843F6FA76}"]
function Convert(Quantity: Double; InUnit: SYSINT; OutUnit: SYSINT): Double; safecall;
end;
IAreaUnitConverterDisp = dispinterface
["{019B9D28-D5EE-4952-91C5-D39843F6FA76}"]
function Convert(Quantity: Double; InUnit: SYSINT; OutUnit: SYSINT): Double; dispid 5;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.006 c