Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CListBox.GetText и русский язык 
:(
    Опции темы
alex6077582
Дата 16.9.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 16.9.2010

Репутация: нет
Всего: нет



В программе пользователь заполняет данными Лист бокс, вводит в Едит Текст строку и нажимает ОК.
Строка копируется с Едита и добавляется в Лист бокс при помощи функции: 
m_Edit.GetWindowText(m_String);
m_ListBox.AddString( m_String);
Затем пользователь сохраняет данные в тхт файл.
m_ListBox.GetText(index, TempString);
m_File.WriteString(TempString);
и тут проблемма:
В программе используется Юникод и метод - m_LsitBox.GetText(index, TempString);
в строку TempString ничего не копирует если использовался русский текст, а если Английский, то всё работает нормально.
Подскажите пожалуйста как решить эту проблемму.
Зарание благодарен.

Добавлено через 2 минуты и 19 секунд
И ещё.
У меня Windows 7 and Visual Studio 2008.
PM MAIL   Вверх
Albor
Дата 16.9.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



Какой тип у TempString? Хотя, если строки добавляются в листбокс, то должны и читаться от туда. А что возвращает m_ListBox.GetText()?

Это сообщение отредактировал(а) Albor - 16.9.2010, 13:48
PM MAIL ICQ   Вверх
alex6077582
Дата 16.9.2010, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 16.9.2010

Репутация: нет
Всего: нет



TempString это обьект класса CString
но я немного розобрался.
Функция m_ListBox.GetText(index, TempString) работает нормально и нормально сохраняет русский текст в TempString, оказывается проблемма в другом(при отладке я не внимательно проверил) .
CString tempStr; 
CStdioFile fileSave(m_szPathName, CFile::modeCreate |
    CFile::modeWrite | CFile::typeText);\\обьект для сохранения тхт файла
for(int i = 0; i < m_ListBox.GetCount(); i++)
{
    m_ListBox.GetText(i, tempStr);     \\берём строку из ListBox по индексу i и она правильно сохраняется в tempStr
    tempStr += _T("\n");                   \\добовляем к строке эскейп последовательность 
    fileSave.WriteString(tempStr);       \\ и тут проблемма если в tempStr английский текст, то всё нормально, а если русский то в файл тупо ничего не пишится, как буддто компилятор игнориррует этот оператор.
PM MAIL   Вверх
Albor
Дата 16.9.2010, 17:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 589
Регистрация: 28.2.2009

Репутация: 7
Всего: 9



Создавай файл с флагом CFile::typeBinary, а перевод строки делай так tempStr += _T("\r\n");
PM MAIL ICQ   Вверх
alex6077582
Дата 16.9.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 16.9.2010

Репутация: нет
Всего: нет



Так и хотел попробовать!
чуть позже проверю, напишу
PM MAIL   Вверх
alex6077582
Дата 16.9.2010, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 16.9.2010

Репутация: нет
Всего: нет



Спасибо помогло.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1341 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.