Как можно нормально прочитать файл? - страница 2

 
TheXpert:
у меня 5 терминал не запускается, то ли из-за обновления винды, то ли из-за обновления терминала. лень разбираться, так что с МТ5 пока не помогу

Если не на линуксе, и нет желания часто обновляться, как у меня т.к. пачка обнов это не есть хорошо. Советую версию Windows 10 Enterprise LTSB. Обновляется крайне редко, т.е. только проверенные апдейты, а не всё в подряд, как в других версиях. Я как установил не нарадуюсь..

Я в сервисдеск написал о баге. Подожду ответ. Код одинаковый и там и там Да и в документации по работе с файлами и, в частности, с этими функциями нет разницы. А значит что-то в самой платформе видимо. В общем, жду официальный ответ.

 
Вы пишете здесь только о чтении. А записан файл правильно? Есть концы строк 0D0A или перевода строк 0A ? Если нет, то читается все содержимое файла. На печать, возможно, проходит лишь первая строка (не знаю, так  ли). http://www.programmersforum.ru/showthread.php?t=103500
Как в текстовом файле распознать символ перевода строки?
  • mzelenyy
  • www.programmersforum.ru
Как во время чтения файла распознать символ перевода строки? Например, я думал так: ifstream f("1.txt"); char s; for(;!f.eof();{ f>>s; if(s=='13')....... } но так видит только строчные символы...
 

При открытии файла явно укажите флаг FILE_ANSI

В пятёрке если этоти флаг не указан, то считается, что файл - юникодный.

 
Slava:

При открытии файла явно укажите флаг FILE_ANSI

В пятёрке если этоти флаг не указан, то считается, что файл - юникодный.

там же кодировка явно указана!?

 

Кодировка - это параметр умолчательный. Если она явно не указана, то компилятор добавит умолчательное значение.

Кодировку приделали как раз из-за новой четвёрки, когда нужно было преобразовывать данные неизвестного происхождения в юникодные строки.

В пятёрке таких проблем не было, поэтому до сих на это никто не обращал внимания, в том числе и мы.

Можно, конечно, расширять сознание и при кодировке, отличной от 0 (CP_ACP) насильно вставлять флаг FILE_ANSI. Но лично я не уверен, что это будет правильно, так как можно поломать что-то уже работающее. К тому же неизвестно, когда данное изменение войдёт в билд. Поэтому явно указывайте FILE_ANSI.

 
Slava:

вы похоже не поняли. у вас прямо сейчас конфликт кодировки и флагов, который вы без тени смущения переносите на пользователя.

при явно указанной кодировке UTF-8 нет никакого ANSI и UNICODE, есть кодировка, с символом переменного размера.

правильно я понимаю что вы не хотите исправлять баг чтобы не перестало работать то что сейчас работает? ))
 

Я как раз понял.

Представьте ситуацию. Некто пишет-переписывает исходник. И так и этак. В конце концов в вызове FileOpen на месте code_page осталось ненулевое значение. Но оно работает, так как разработчики не удосужились правильно реализовать семантику FileOpen

Наконец разработчики увидели свою ошибку и внесли правильные изменения. У этого некта перестало работать. Внезапно. И это - маркетный продукт.

 
Slava:

Я как раз понял.

раз вы поняли, покажите пожалуйста аналог флага FILE_ANSI хоть в каком-нибудь языке.
 
TheXpert:
раз вы поняли, покажите пожалуйста аналог флага FILE_ANSI хоть в каком-нибудь языке.

То есть, к флагам FILE_CSV и FILE_COMMON у вас вопросов нет?

Интересно, как вам поможет знание о наличии или отсутствии аналога флага FILE_ANSI?

 
Slava:

То есть, к флагам FILE_CSV и FILE_COMMON у вас вопросов нет?

К FILE_CSV конечно есть, это вами придуманный костыль. К FILE_COMMON нет, это вполне нормальное решение разделения песочниц.

Интересно, как вам поможет знание о наличии или отсутствии аналога флага FILE_ANSI?

Мне никак. Я пытаюсь донести до вас мысль что это тоже ваш внутренний костыль для решения ваших непонятных проблем, который вы сейчас судорожно защищаете.
Причина обращения: