Показать сообщение отдельно
Старый 12.04.2011, 16:20   #13
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Йоха, спасибо.
Вот только проблема в том, что предложенный тобой код не универсален, а в псивове уже есть множество функций вывода текста. Твоё преобразование придётся пихать в каждую их них или писать функцию (что почти равносильно - всё равно придётся переписывать код в очень многих местах...)
Но всё же интересно, как эту ситуацию порешили разработчики мангоса Владимир, не поделитесь тайной?

Добавил функцию, решил так перевести хотя бы некоторые строки - фиг вам получил.
Код:
Код:
char *str_utf8_to_866(BYTE *buf)
{
	wchar_t* pResw = 0;
	char* pRes = 0;
	int res_len = 0;

	res_len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, 0, 0);
	if (!res_len)
		return NULL;

	pResw = new wchar_t[res_len];
	if (!MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, pResw, res_len))
	{
		delete[] pResw;
		return NULL;
	}

	res_len = WideCharToMultiByte(866, 0, pResw, -1, 0, 0, 0, 0);
	if (!res_len)
		return 0;

	pRes = new char[res_len];
	if (!pRes)
		return NULL;

	if (!WideCharToMultiByte(866, 0, pResw, -1, pRes, res_len, 0, 0))
	{
		delete[] pRes;
		return NULL;
	}
	delete[] pResw;
		return pRes;
}

void logcustom(uint8 lvl, Color color, BYTE *stru, ...)
{
	char *str = str_utf8_to_866(stru);

    if(!str || loglevel < lvl)
        return;
    va_list ap;
    _log_setcolor(true,color);
    if(logtime)
        printf("%s ", GetTimeString().c_str());
    va_start(ap, str);
    vprintf( str, ap );
    va_end(ap);
    _log_resetcolor(true);

    printf("\n");

    if(logfile)
    {
        fprintf(logfile, "%s", getDateString().c_str());
        va_start(ap, str);
        vfprintf(logfile, str, ap);
        fprintf(logfile, "\n" );
        va_end(ap);
        fflush(logfile);
    }
    fflush(stdout);
}
Почему-то ругается на неразрешённый внешний символ
Код:
3>DefScriptInterface.obj : error LNK2001: неразрешенный внешний символ ""void __cdecl logcustom(unsigned char,enum Color,char const *,...)" (?logcustom@@YAXEW4Color@@PBDZZ)"
А при чём он здесь вообще???
KiriX вне форума   Ответить с цитированием