
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.5] |
![]() |
|
Сообщ.
#1
,
|
|
|
переношу код с проекта в проект вилазит такая ошибка
предупреждение обработано как ошибка - файл "object" не создан - как убрать ету ошибку ![]() ![]() wchar_t ch0, ch1, ch2; ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); <<<< ерор |
Сообщ.
#2
,
|
|
|
_tcstol,эта функция кажется в лонг конвертит судя по названию, к файлам наверное отношения не имеет.
Цитата NOCaut @ strEncodedText Это что за объект? |
Сообщ.
#3
,
|
|
|
Cstring strEncodedText;
Но на другом моем проекте она ж работает ![]() Добавлено неработает само присвоение. сама строчка рабочая |
Сообщ.
#4
,
|
|
|
NOCaut, напиши полный текст отчета компилятора об ошибке.
|
Сообщ.
#5
,
|
|
|
![]() ![]() 1>------ Построение начато: проект: WebCtrl, Конфигурация: Release UNICODE Win32 ------ 1>Компиляция... 1>CntrEvnt2.cpp 1>.\CntrEvnt2.cpp(28) : error C2220: предупреждение обработано как ошибка - файл "object" не создан 1>.\CntrEvnt2.cpp(28) : warning C4244: =: преобразование 'long' в 'wchar_t', возможна потеря данных |
Сообщ.
#6
,
|
|
|
Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что.
Добавлено http://www.codeguru.com/forum/archive/index.php/t-369504.html Возможно второй параметр функции должен быть не NULL |
Сообщ.
#7
,
|
|
|
Цитата Возможно _tcstol не может сконвертить CSring во что-то не зная сигнатуры _tcstol трудно сказать во что. _tcstol |
Сообщ.
#8
,
|
|
|
щас проверим
Добавлено да нет же говорю правая часть строки РАБОЧАЯ Добавлено ![]() ![]() _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); так компилится Добавлено ето наверное структура проекта дуратская. за нее все |
Сообщ.
#9
,
|
|
|
Ну а если сделать явное приведение?
|
Сообщ.
#10
,
|
|
|
![]() ![]() ![]() wchar_t* _result = 0; DWORD count = _tcstol( strEncodedText.Mid( i+1, 2 ), &_result, 16 ); Как-то так. |
Сообщ.
#11
,
|
|
|
![]() ![]() CString URLDecode( CString strEncodedText ) { CString strResult; wchar_t ch0, ch1, ch2; wchar_t wch; TCHAR tch; int i = 0; while( i<strEncodedText.GetLength() ) { tch = strEncodedText.GetAt(i); if( tch != _T('%') ) { // a character not encoded strResult += tch; i++; } else { // a character encoded !! ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 < 0x80 ) // 1 byte for UTF-8 // 0xxx xxxx wch = ch0; else { if( strEncodedText.GetAt(i)!= _T('%') ) // Error! continue; ch1 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 < 0xe0 ) { // 2 byte for UTF-8 // 110x xxxx 10xx xxxx wch = ((ch0&0x1f)<<6) | (ch1&0x3f); } else { // 3 byte for UTF-8 if( strEncodedText.GetAt(i)!= _T('%') ) // Error! continue; ch2 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; // 1110 xxxx 10xx xxxx 10xx xxxx wch = ((ch0&0x0f)<<12) | ((ch1&0x3f)<<6) | (ch2&0x3f); } } strResult += wch; } } } return strResult; Добавлено а можнго както компилятор настроить? |
Сообщ.
#12
,
|
|
|
Отвечающие здесь - вы хоть сообщение об ошибке читаете? В настройках проекта стоит высокий уровень предупреждений - предупреждения рассматриваются как ошибки, соответственно компиляция не проходит.
|
Сообщ.
#13
,
|
|
|
trainer,
![]() |
Сообщ.
#14
,
|
|
|
спасибо. а где ети настройки?
|
Сообщ.
#15
,
|
|
|
Нужно либо убрать источник предупреждения - [неявное] преобразование long в wchar_t с возможной потерей значащих разрядов, либо убрать ключик /WX, либо добавить /wd4244, либо с помощью #pragma warning подавить это предупреждение в этом конкретном месте.
|
Сообщ.
#16
,
|
|
|
конец рабочего дня блин
![]() |
Сообщ.
#17
,
|
|
|
всем спасибо
|
Сообщ.
#18
,
|
|
|
Цитата NOCaut @ Здесь: http://msdn.microsoft.com/RU-RU/library/thxezb7y внизу текст а где ети настройки? |