Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> из UNICODE в ANSI, подскажите как сделать:) 
:(
    Опции темы
nikakoi
Дата 22.5.2006, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добрый день.
У меня вот какая проблема... пишу програмку для сохранения текста в файл для КПК...
без использования Unicode она жутко ругается=)
а с использованием полученный файл открывается вроде не в Unicode, а в ANSI(или ASCI(не уверен как правильно назвать-)))
Подскажите как мне конвертануть текст, чтобы читабельно было?  
PM MAIL   Вверх
_hunter
Дата 22.5.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



MultiByteToWideChar?   


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Earnest
Дата 22.5.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Ты что-то путаешь. Открывается файл всегда одинаково. Ну разве что в текстовом или бинарном режиме, к UNICODE это отношения не имеет. Если ты пишешь в файл UNICODE-строки, то их в файле и имеешь. И выглядят они при открытии в чем-нибудь неподходящем, конечно, странновато. И читать нужно тоже UNICODE-строки, разумеется.
Однако никто не мешает писать в файл "обычные" строки, даже если программа UNICODE. Так что, пожалуйста, изложи конкретнее, что имеено ты хочешь, и что у тебя не получается. 


--------------------
...
PM   Вверх
nikakoi
Дата 22.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Не уверен, что конкретнее получится..
Получил файл с юникодными строками(а точнее там всего одна строка.)... Открываю на КПК... после каждого символа стоит квадрат..
Открываю в винде этот же фаил - квадраты встречаются везде где было \n...
а в FAR'е все вообще замечательно работает - фаил открывается нормально, никаких квадратов нет...  
PM MAIL   Вверх
Earnest
Дата 22.5.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Самая главная проблема программиста (да и любого специалиста) - вовсе не отсутствие каких-то знаний, а каша в голове.
Что значит "открываю на КПК"? Это девочка-секретарша так сказать имеет право. 
Файл открывается не на компьютере, а в какой-то программе. Причем каждая программа как-то его читает и интерпретирует. FAR умеет понять, что файл записан в UNICODE, и соответственно интерпретирует показываемые строки. Windows обычно тоже умеет, хотя это зависит от версии. Квадраты после каждого символа - так некоторые текстовые редакторы показывают то, чего не знают. В данном случае нули в начале каждого широкого символа. Так что нормальный у тебя UNICODE файл.
Так что ты хочешь-то? Чтобы просмотрщик, который ты в КПК используешь, нормально UNICODE-файлы читал? Так это к Биллу Гейтсу претензии... smile  Или все-таки ты хочешь получить простой ASCII файл, который любой самый древний редактор нормально прочитает? Так и пиши туда ASCII-строки.
Цитата(nikakoi @  22.5.2006,  10:30 Найти цитируемый пост)
без использования Unicode она жутко ругается=)

Матом, наверное, раз постеснялся написать конкретно...
 


--------------------
...
PM   Вверх
nikakoi
Дата 22.5.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ну все=) унизили и обиделиsmile(вот так и задавай вопросы)
нет не матом... 
D:\Microsoft Visual Studio 8\VC\ce\atlmfc\include\afxv_w32.h(227) : fatal error C1083: Cannot open include file: 'mbctype.h': No such file or directory

вот что выдает...

а по поводу секретаршиsmile...ну я особо не задумывался, какой именно прогой на КПК открываются файлы...

 да и вообще я только учусь...

а CString'и они в ASCII бывают?? я все ими сделал просто  

Это сообщение отредактировал(а) nikakoi - 22.5.2006, 13:01
PM MAIL   Вверх
Earnest
Дата 22.5.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Не обижайся, я любя  smile И по-моему, по делу...
Между прочим, ты так и не сказал конкретно, в чем проблема. А правильно поставленный вопрос - это уже половина решения... 

CString - это макрос, который либо CStringA, либо CStringW, в зависимости от того, как скомпилирована программа - UNICODE или нет.
Во-первых, можно пользоваться конкретным типом (т.е. CStringA).
Во-вторых, если тебе нужен файл для KПK, то зачем тебе UNICODE?

Из твоих объяснений я поняла, что не-UNICODE программу тебе сделать не удается. Так первым делом с этим надо разобраться, потому как нехорошо это. Судя по всему 8-я студия сразу по умолчанию ставит использование UNICODE.

Вот тут я тебе ничего конкретно сказать не могу, т.к. у меня VS 2003, и для КПК я никогда не писала, а ты, похоже, как-то специально проект настраивал именно под програмирование КПК? (Путь в ошибке какой-то странный: ...VC\ce\atlmfc\include... - что там за "ce"?).
Так вот, сначала нужно разобраться, вдруг правда нельзя не-UNICODE программы писать для КПК? (сомнительно, честно говоря). Попробовать сделать проект заново, указав опцию "использовать MultiByte".
А может у тебя просто пути к инклуд-каталогам неправильно настроены?

 


--------------------
...
PM   Вверх
CaptainFlint
Дата 23.5.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

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



Цитата(Earnest @  22.5.2006,  14:27 Найти цитируемый пост)
Во-вторых, если тебе нужен файл для KПK, то зачем тебе UNICODE?

Если не ошибаюсь, Windows Mobile - юникодная система... 


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 23.5.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Тогда непонятно, почему оно UNICODE-файлы не читает нормально. 


--------------------
...
PM   Вверх
CaptainFlint
Дата 23.5.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

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



Earnest, так ведь ещё не ясно, что за программа, как написана и т.д. Может же юникодная программа быть написана так, что читает только ANSI-файлы. Например, если пишется с использованием char'ов, а не TCHAR'ов... Код нужон...

PS: Эх, жаль, так до сих пор и не выбрал времени поиграться с программированием под КПК... smile 


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Earnest
Дата 23.5.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Мне казалось из контекста вопросов, что для чтения используется что-то стандартное, а не самопал:
Цитата(nikakoi @  22.5.2006,  13:09 Найти цитируемый пост)
Открываю на КПК

- про свою программу так обычно не говорят...

Ждем аффтара... 


--------------------
...
PM   Вверх
nikakoi
Дата 24.5.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Аффтар тут=))
Я использую Cstring'и, как и писал в начале...
Код

  CStdioFile file;
  CString path = "test.txt";
  file.Open(path, CFile::modeWrite | CFile::modeCreate, NULL);
  CString string = "GetDeviceCaps: \n\n";
  string += "PresentationIntervals:   \n";
  file.WriteString(string);
. 
Вот в карце текст программкиsmile 

А открываю txt файл обычным WordMobile'ом(кажется он так называется)  

Это сообщение отредактировал(а) nikakoi - 24.5.2006, 10:31
PM MAIL   Вверх
Earnest
Дата 24.5.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Проверь, читает ли этот Вордомобиль какие-нибудь другие файлы UNICODE (не твои). 
Если читает нормально, значит, надо искать, чем твои порождения отличаются.
Если не читает, значит пиши не-UNICODE. Т.е. используй CStringA.

Кстати, записывать файлы в тестовом режиме не пробовал? Может ему просто \r\n не хватает для счастья?
В смысле, по-моему по умолчанию там бинарный режим, а для текстового нужно указать что-то вроде modeText. 


--------------------
...
PM   Вверх
nikakoi
Дата 24.5.2006, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В винде делал юникод файл(текстовыйsmile)... скопировал на КПК... ВордоМобильsmile читал правильно..
CStringA и modeText  я не пробовал...
Надеюсь вечером потестю...
 
PM MAIL   Вверх
CaptainFlint
Дата 24.5.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

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



Судя по тексту программы, она собрана в режиме ANSI, поскольку строки написаны без L и без _T(). Значит, CString ранслируется в CStringA (как и все API-вызовы). Если сопоставить с этим первый пост темы, как-то странно всё это выглядит... 


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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