![]() |
|
|
![]()
|
|
| Rickert |
|
||||||||||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Недавно перешёл на VS 2005, раньше в VS 2003 не было никакх проблема с fopen и fprintf, а теперь такая песня:
Открываю файл:
Мне компилятор выдаёт предупреждение:
После чего пытаюсь записать в открытй файл:
tmp->num - int tmp->name и tmp->path - CString В них все значения правильные, но в файл она пишет след. значения:
Добавлено @ 11:13 Только что пробовал проделать всё через API'шные функции:
Смотрю в дебаге str - значения нормально прописались, а в файле всё равно белебердень. Это сообщение отредактировал(а) Rickert - 19.11.2006, 11:14 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||||||||
|
|||||||||||
| nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
Это очередная гнилая попытка M$ подмять стандарт под себя:
|
||||||
|
|||||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
С этим ясно, а что по поводу неверно - записываемого значения?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
С переводом значения из wchar_t в char Это сообщение отредактировал(а) Rickert - 19.11.2006, 14:09 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Интересно, что при использовании API'шных функций, всё-таки информация записывается неправильно:
Почему -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
name и path у тебя в уникоде? Если сите просто CStringб то вероятно да. Посему либо конверть в анси, либо смотри файлик в уникоде
|
|||
|
||||
| Rickert |
|
||||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Любитель, не знаю. А по умолчанию CString хранит в юникоде разве?
Как?
Понимаешь, там даже значений никаких нет. Там сначала идёт длинна строки, а потом строка. Смотри, видишь длинну 43? А после неё всего лишь два символа. Как ты этот файл не просматривай, но если там никаких значений, то они не появятся из ниоткуда. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||
|
|||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
CString это не конкретный тип. Он типодефится либо в CStringA либо в CStringW. Сделай тупую проверку: попробуй прочитать теперь из файла (программно) и выведи как-нибудь на экран. Или (в данном случае разумней) используй CStringA или std::string.
|
|||
|
||||
| Rickert |
|
||||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Пробовал все варианты уже _T, _TEXT, L"".
CStringA str2 - нулевой результат, тот же глюк. CStringW str2 - нулевой результат, тот же глюк. Это сообщение отредактировал(а) Rickert - 23.11.2006, 16:47 -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
В чем глюк-то?
Из беглого просмотра темы не поняла. -------------------- ... |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Глюк в том, что в переменной хранятся нормальное значение строки(смотрю в дебаге), а при любом выводе в файл(FILE, CFile, CreateFile) - в файл пишется белеберда.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Файл текстовый или двоичный? Что именно видишь в файле? Имей в виду, что юникодные или русские символы могут выглядеть совсем не так, как ты ожидаешь.
Кстати, строку лучше писать вместе с завершающим нулем, т.е. GetLength()+1 символов. Либо писать перед строкой ее длину. Иначе как читать потом будешь? Кроме того, в Юникоде длина символа = 2 байта, так что в файл нужно писать соответственно:
-------------------- ... |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
А ещё вспомни, что Format типобезопасностью не радует (т. к. юзает (w)snprintf) => %s внаглую интерпретирует строку не как юникод. Поэтому ни в коем случае не используй юникод (или другие форматные символы ставь -> см. MSDN), а лучше откажись от нетипобезопасных функций (методов).
|
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Посмотри то, что я постил до этого - там на все вопросы ответы. Файл не бинарник. Вижу в нём вышеуказнное. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |