![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Добрый день.
У меня вот какая проблема... пишу програмку для сохранения текста в файл для КПК... без использования Unicode она жутко ругается=) а с использованием полученный файл открывается вроде не в Unicode, а в ANSI(или ASCI(не уверен как правильно назвать-))) Подскажите как мне конвертануть текст, чтобы читабельно было? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
MultiByteToWideChar?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ты что-то путаешь. Открывается файл всегда одинаково. Ну разве что в текстовом или бинарном режиме, к UNICODE это отношения не имеет. Если ты пишешь в файл UNICODE-строки, то их в файле и имеешь. И выглядят они при открытии в чем-нибудь неподходящем, конечно, странновато. И читать нужно тоже UNICODE-строки, разумеется.
Однако никто не мешает писать в файл "обычные" строки, даже если программа UNICODE. Так что, пожалуйста, изложи конкретнее, что имеено ты хочешь, и что у тебя не получается. -------------------- ... |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Не уверен, что конкретнее получится..
Получил файл с юникодными строками(а точнее там всего одна строка.)... Открываю на КПК... после каждого символа стоит квадрат.. Открываю в винде этот же фаил - квадраты встречаются везде где было \n... а в FAR'е все вообще замечательно работает - фаил открывается нормально, никаких квадратов нет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Самая главная проблема программиста (да и любого специалиста) - вовсе не отсутствие каких-то знаний, а каша в голове.
Что значит "открываю на КПК"? Это девочка-секретарша так сказать имеет право. Файл открывается не на компьютере, а в какой-то программе. Причем каждая программа как-то его читает и интерпретирует. FAR умеет понять, что файл записан в UNICODE, и соответственно интерпретирует показываемые строки. Windows обычно тоже умеет, хотя это зависит от версии. Квадраты после каждого символа - так некоторые текстовые редакторы показывают то, чего не знают. В данном случае нули в начале каждого широкого символа. Так что нормальный у тебя UNICODE файл. Так что ты хочешь-то? Чтобы просмотрщик, который ты в КПК используешь, нормально UNICODE-файлы читал? Так это к Биллу Гейтсу претензии... Матом, наверное, раз постеснялся написать конкретно... -------------------- ... |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
ну все=) унизили и обидели
нет не матом... 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 вот что выдает... а по поводу секретарши да и вообще я только учусь... а CString'и они в ASCII бывают?? я все ими сделал просто Это сообщение отредактировал(а) nikakoi - 22.5.2006, 13:01 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Не обижайся, я любя
Между прочим, ты так и не сказал конкретно, в чем проблема. А правильно поставленный вопрос - это уже половина решения... CString - это макрос, который либо CStringA, либо CStringW, в зависимости от того, как скомпилирована программа - UNICODE или нет. Во-первых, можно пользоваться конкретным типом (т.е. CStringA). Во-вторых, если тебе нужен файл для KПK, то зачем тебе UNICODE? Из твоих объяснений я поняла, что не-UNICODE программу тебе сделать не удается. Так первым делом с этим надо разобраться, потому как нехорошо это. Судя по всему 8-я студия сразу по умолчанию ставит использование UNICODE. Вот тут я тебе ничего конкретно сказать не могу, т.к. у меня VS 2003, и для КПК я никогда не писала, а ты, похоже, как-то специально проект настраивал именно под програмирование КПК? (Путь в ошибке какой-то странный: ...VC\ce\atlmfc\include... - что там за "ce"?). Так вот, сначала нужно разобраться, вдруг правда нельзя не-UNICODE программы писать для КПК? (сомнительно, честно говоря). Попробовать сделать проект заново, указав опцию "использовать MultiByte". А может у тебя просто пути к инклуд-каталогам неправильно настроены? -------------------- ... |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Если не ошибаюсь, Windows Mobile - юникодная система... -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Тогда непонятно, почему оно UNICODE-файлы не читает нормально.
-------------------- ... |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Earnest, так ведь ещё не ясно, что за программа, как написана и т.д. Может же юникодная программа быть написана так, что читает только ANSI-файлы. Например, если пишется с использованием char'ов, а не TCHAR'ов... Код нужон...
PS: Эх, жаль, так до сих пор и не выбрал времени поиграться с программированием под КПК... -------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Мне казалось из контекста вопросов, что для чтения используется что-то стандартное, а не самопал:
- про свою программу так обычно не говорят... Ждем аффтара... -------------------- ... |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
Аффтар тут=))
Я использую Cstring'и, как и писал в начале...
Вот в карце текст программки А открываю txt файл обычным WordMobile'ом(кажется он так называется) Это сообщение отредактировал(а) nikakoi - 24.5.2006, 10:31 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Проверь, читает ли этот Вордомобиль какие-нибудь другие файлы UNICODE (не твои).
Если читает нормально, значит, надо искать, чем твои порождения отличаются. Если не читает, значит пиши не-UNICODE. Т.е. используй CStringA. Кстати, записывать файлы в тестовом режиме не пробовал? Может ему просто \r\n не хватает для счастья? В смысле, по-моему по умолчанию там бинарный режим, а для текстового нужно указать что-то вроде modeText. -------------------- ... |
|||
|
||||
| nikakoi |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 176 Регистрация: 6.5.2006 Репутация: нет Всего: нет |
В винде делал юникод файл(текстовый
CStringA и modeText я не пробовал... Надеюсь вечером потестю... |
|||
|
||||
| CaptainFlint |
|
|||
|
Искатель сокровищ ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 26.2.2003 Где: Москва Репутация: нет Всего: 23 |
Судя по тексту программы, она собрана в режиме ANSI, поскольку строки написаны без L и без _T(). Значит, CString ранслируется в CStringA (как и все API-вызовы). Если сопоставить с этим первый пост темы, как-то странно всё это выглядит...
-------------------- Почему же, ё-моё, ты нигде не пишешь "ё"? -------------------- Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |