wxString - строка содержащая число в строковом представлении.
m_nSize - 64 битное число.
MinGW - компилятор.
wxWidgets - фреймворк.
Задача:
Конвертировать строку в число, дабы произвести некие действия.
Решение:
Открываем доки, ищем и находим следующее:
wxString::ToLongLong
bool ToLongLong(wxLongLong_t *val, int base = 10) const
Если конвертирование возможно получаем true, но вся соль в том, что в случае с MinGW во всех случаях обламываемся и получаем false, т.к. есть некоторое условие:
Compilers with C99 support and Microsoft Visual C++ version 7 and higher do support this.
Читаем и изучаем stdlib.h и внимательно справку по wxString
Получаем следующее:
m_nSize = atoll(strHeaderSize.char_str());
Проверяем результат:
wxMessageBox(wxString::Format(wxT("%lld"), m_Size));
и обламываемся, оказывается M$ имеет свой стандарт на форматирование и в MinGW
надо использовать следующее:
wxMessageBox(wxString::Format(wxT("%I64d"), m_nSize));
Да-да, стандарты существуют для того же для чего и законы.
P.S. в Symbian при переходе с 7.0s-8.1a на 8.1b тоже изменили:
BEFORE:
x.GetTInt();
AFTER:
I64INT(x);
Комментариев нет:
Отправить комментарий