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

Вниз

Собственная реализация IDispatch   Найти похожие ветки 

 
Priest ©   (2006-12-27 16:33) [0]

Реализую интерфейс. Вот основные методы


function TPxTest.GetIDsOfNames(const IID: TGUID; Names: Pointer;
 NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
 Result := S_OK;
 if SameText(PointerToString(Names), "TestMethod") then
   SetDispIDs(DispIDs,-111)
 else
   Result := inherited GetIDsOfNames(IID, Names, NameCount, LocaleID, DispIDs);
end;

function TPxTest.Invoke(DispID: Integer; const IID: TGUID; LocaleID:
 Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer):
 HResult;
var
S: string;
DispPars:TDispParams;
begin
 Result := S_OK;
 if DispID = -111 then
   begin
    DispPars:=TDispParams(DispPars);
    if DispPars.cArgs = 1 then
       begin
         S:=DispPars.rgvarg^[0].bstrVal;
         S := TestMethod(S);
         SetVarResult(VarResult, S);
       end
     else
       Result := DISP_E_BADPARAMCOUNT;
   end //if DispID = 0 then
 else
   Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr);
end;


На клиенте происходит вызов

RDS:=CreateOleObject("xServer.MyServer");
S:=Edit1.Text;
Caption:=RDS.PxTestPluggin.TestMethod(S);


Проблема в том, что в Invoke всегда DispPars.cArgs равно 0. В чём проблема?


 
tesseract ©   (2006-12-27 17:03) [1]


>  DispPars:=TDispParams(DispPars);


может

 DispPars:=TDispParams(Params) ?


 
Priest ©   (2006-12-28 09:39) [2]

Точно. Спасибо. Это МоделМейкер Код Эксплорер юзал, он и переименовал все параметры. Причём всё работало. А потом кое что менял и решил переименовать переменную...Вот и результат



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

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

Наверх




Память: 0.44 MB
Время: 0.064 c
15-1269530562
И. Павел
2010-03-25 18:22
2010.08.27
Перестали загружаться файлы (PHP)


15-1268600885
Кто б сомневался
2010-03-15 00:08
2010.08.27
Газик


2-1269160832
pavel_guzhanov
2010-03-21 11:40
2010.08.27
Как проверить, что элемент массива пустой?


2-1273184472
concord
2010-05-07 02:21
2010.08.27
Фильтрация данных


2-1271495387
G.I.
2010-04-17 13:09
2010.08.27
Таймер в Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский