Леш, ты бы посмотрел одну вещуюху на счет вылетов (напарывался на нее).
Когда работаешь с макросами перевода строки из юникода в анси жти макросы
фейх#ево отрабатывают и ошибка может вылезать в любом месте программы.
По этому некий чел эту ситуёвину купировал:
// Convert unicode OLE string (BSTR) to ANSI string.
// Code page optional, system code page is used by default.
// Return converted ANSI string and length (terminating zero
// is not included) or zero, if conversion failed.
// Конвертирует большие строки из BSTR в ANSI
inline int BSTR2Ansi(BSTR bstr, LPSTR *lpsz, UINT uiCP = CP_ACP)
{
int iChars = ::SysStringLen(bstr);
int iRet = 0;
if(iChars)
{
*lpsz = new char[++iChars];
iRet = WideCharToMultiByte(uiCP, 0, bstr, -1, *lpsz, iChars, 0, 0);
}
return (iRet == 0) ? 0 : --iRet;
}
Если ты конечно с комом работаешь...
ps. Это так, просто одна из замеченных спотыкательных ситуевин, мой нос мне подсказывает, что возможно это поможет.