CString Формат проблемы и различия в Windows XP и 7? - PullRequest
0 голосов
/ 20 января 2011

Есть проблема, приведенный ниже код работает для Windows 7, а не для Windows XP?Вы случайно не знаете причину этого?Заранее спасибо.Я проверил, что это не ошибка БД.

Для Win 7 он возвращает то, что хранится, также как и для Win XP.Но форматирование в XP устанавливает CString как "".

if(getDB()->getEncoding() == IDatabase::UTF8){
    a_value.Format(_T("%s"), sqlite3_column_text(getCommand()->getStatement(), idx));
}else{
    a_value.Format(_T("%s"), sqlite3_column_text16(getCommand()->getStatement(), idx));
}

Кроме того, мы уверены, что это не проблема с Unicode.

Ответы [ 2 ]

0 голосов
/ 20 января 2011

проверить, совпадает ли набор символов, настроенный во время компиляции, на двух платформах

Юникод

или

мультибайт

возможно, это помогает, пока1009 *

0 голосов
/ 20 января 2011

Это действительно не проблема для Windows. Вы уверены, что не делаете разные сборки между версией, которая работает, и той, которая не работает?

Приведенный выше код проблематичен, потому что если вы выполняете сборку Unicode, sqlite3_column_text() вернет неверный тип строки Для сборок Unicode вам нужно вместо этого sqlite3_column_text16().

...