|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.06.2011, 13:35 | #1 |
Форумчанин
Регистрация: 23.05.2007
Сообщений: 151
|
Преобразование функцией _wtoi(): не все символы достались целому числу
Первая строка у меня в файле сейчас "309".
Код:
Почему 09 упущено функцией _wtoi() ? В архиве скрин значения переменной line в отладке VS2008. |
26.06.2011, 13:52 | #2 |
JAVA BEAN
Участник клуба
Регистрация: 22.04.2007
Сообщений: 1,329
|
_wfopen
Файл должен быть в кодировке utf16, либо делайте преобразование MultiByteToWideChar |
26.06.2011, 18:18 | #3 |
Форумчанин
Регистрация: 23.05.2007
Сообщений: 151
|
Использование _wfopen
Задействовал _wfopen():
Код:
|
26.06.2011, 20:02 | #4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
_wfopen совершенно не причем, раз уж как-то хендл файла получен.
Я так понимаю, Carbon просто указал на ошибку стилистики. Сам прекрасно видишь, что каждый символ оканчивается 0, что означает конец строки. Тебя удивляет, что в lister символы слитно? Но там конец строки определяется символом "возврат каретки" (13). Расскажи, как пишешь в файл. ЗЫ. И кстати в lister/Вид/только текст поставь - разрывы увидишь. Последний раз редактировалось EUGY; 26.06.2011 в 20:11. |
26.06.2011, 21:36 | #5 | |
Форумчанин
Регистрация: 23.05.2007
Сообщений: 151
|
EUGY>>Расскажи, как пишешь в файл.
Храню только числа в файле. Сам текстовик был создан функцией WriteFile() (в Delphi XE), она записала его в Unicode. Отсюда и проблема возникла. До этого я использовал в Delphi XE такой метод: Цитата:
Как лучше поступить? |
|
26.06.2011, 22:25 | #6 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Что посоветовать..
Конвертим к ANSII, пропуская четный wchar_t Код:
Последний раз редактировалось EUGY; 26.06.2011 в 22:29. |
27.06.2011, 12:01 | #7 |
Форумчанин
Регистрация: 23.05.2007
Сообщений: 151
|
lineClear = new char[sizeof(line)/2];
Внутри функции показывает в отладчике, что sizeof(line) равно 4. Почему?
Содержимое line: "\x33\x00\x30\x00\x39\x00\x0D\x00\x 0A\x00" (число 309) Код:
Последний раз редактировалось malor; 27.06.2011 в 12:06. |
27.06.2011, 15:04 | #8 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
sizeof(line) равно 4. Это длина переменной указателя. Длину массива придется передавать отдельным параметром.
Последний раз редактировалось EUGY; 27.06.2011 в 15:39. |
27.06.2011, 15:53 | #9 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
|
27.06.2011, 16:12 | #10 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
Передача и длины массива и указателя на массив в функцию это обычная практика. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi перебрать все символы из Edit | AdDa | Помощь студентам | 2 | 06.06.2011 09:19 |
определить все двузначные числа сумма квадратов цифр которых кратна числу 15 [Pascal] | mrRastom | Помощь студентам | 5 | 16.12.2010 09:47 |
Найти в массиве число наиболее близокое к целому числу | Willow | Помощь студентам | 2 | 16.01.2010 13:33 |
Удалить из строки все символы типа #10 #9 и т.д. | TwiX | Общие вопросы Delphi | 10 | 01.12.2009 19:21 |
удалить в строке все одинаковые символы | Михаил70 | Помощь студентам | 5 | 09.09.2009 18:35 |