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.