Re[2]: Возврат значения из функции интерфейса x2
От: apmyp  
Дата: 15.02.12 11:20
Оценка:
Vi2>Нужен код вызова и код обработки. По виду метода ничего сказать нельзя.

Код вызова:

ISomeFace = interface(IDispatch)
    ['{12345587-5B01-4095-9411-9AA28A052C9B}']
    procedure SomeTotal(out total: SYSINT); safecall;
//    function  SomeTotal: SYSINT; safecall; // если retval сделать, но ошибка останется
    procedure SomeGet(pos: SYSINT; out symbol: WideString); safecall;
  end;

//---
Здесь вызов:
MW. SymbolsTotal(K);


Причем SomeGet нормально строку отдает, а вот SomeTotal <<1 или *2.

Код обработки:

STDMETHODIMP CSome::SomeTotal(int* total)
  {
   if(!pos) return(E_HANDLE);
//--- сохраним
   *pos=m_symbols.size(); // на самом деле там не STL, но не суть, в дебаггере вижу корректное значение
//---
   return(S_OK);
  }


А вот при вызове помноженное на 2.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.