Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2013, 16:39   #1
Cherne91
 
Регистрация: 28.12.2011
Сообщений: 4
По умолчанию Признак бинарного или текстового файла

Как реализовать на WinApi (C++) функцию bin() - признак бинарного или текстового файла?
Cherne91 вне форума Ответить с цитированием
Старый 01.05.2013, 17:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Никак. Текстовый файл - разновидность бинарного. Они все бинарные.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.05.2013, 17:25   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Можно попробовать определить по наличию непечатных символов (вроде '\0' и иже с ним). Только нельзя забывать о существовании многобайтовых кодировок, в которых '\0' может встречаться как один из байтов, представляющих корректный печатный символ.
netrino вне форума Ответить с цитированием
Старый 01.05.2013, 18:20   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не припомню, кодировок с нулевыми байтами

вообще в текстовом файле редко бывают байты с кодами 0-9,11-12,14-31 и 127.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.05.2013, 19:00   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
не припомню, кодировок с нулевыми байтами
Unicode.
Цитата:
вообще в текстовом файле редко бывают байты с кодами 0-9,11-12,14-31 и 127.
9 - запросто, это символ табуляции. Встречается:
- в качестве разделителя столбцов таблицы,
- для формирования отступов в текстах программ,
- для формирования отступа начала абзаца.
12 - конец страницы. Встречается в любом файле, разбитом на страницы.
26 - символ конца файла. Может встретиться один раз в конце файла. Кстати, некоторые утилиты принудительно дописывают этот символ в конец текстового файла.

А вообще, все, что описано после последней цитаты, относится исключительно к однобайтовым кодировкам и кодировкам переменной длины. В двухбайтовых кодировках очень часто один из байтов лежит в пределах 0-5. В частности, для латиницы - 0, для кириллицы - 4.
s-andriano вне форума Ответить с цитированием
Старый 01.05.2013, 19:50   #6
Cherne91
 
Регистрация: 28.12.2011
Сообщений: 4
По умолчанию

Просканировать или определить непечатных символов для WinApi не очень надежно. Есть такая функция есть должно быть, например GetFileType. и я использовал эту функцию, но вообще не работает или, может быть, не та функция, которая определяет тип файла.
Cherne91 вне форума Ответить с цитированием
Старый 01.05.2013, 20:39   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Unicode.
на юникод как раз таки проверить не сложно, смотим на BOM.
а если брать UTF8 то там нолей быть не может(кроме ASCII ноля).
ну про часть символов из управляющих, каюсь забыл.

Цитата:
Просканировать или определить непечатных символов для WinApi не очень надежно. Есть такая функция есть должно быть, например GetFileType. и я использовал эту функцию, но вообще не работает или, может быть, не та функция, которая определяет тип файла.
ага, по расширению.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.05.2013, 22:38   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Никак. Текстовый файл - разновидность бинарного. Они все бинарные.
ну можно еще попробовать раздебажить функции чтения файла и посмотреть, как они все "это" разруливают
counter вне форума Ответить с цитированием
Старый 02.05.2013, 00:58   #9
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
как они все "это" разруливают
Никак. Ей сказали прочитать Н байт из файла в опред буффер, она и читает... а что там ей пофик.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 02.05.2013, 01:11   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ну и основной вопрос: собсна а зачем оно надо, такая bin() ?
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Признак запущенного файла davidoff_pk Win Api 7 04.08.2012 12:01
Чтение из бинарного файла lioc C# (си шарп) 10 20.02.2012 21:12
Текст вводится из текстового файла произвольной длины; вывод результатов на экран, принтер или в файл kestugar Помощь студентам 1 29.03.2011 19:09
Разработать программу печати выбранного текстового файла (язык дельфи или ассемблер) KrisPipis Помощь студентам 0 17.01.2011 21:22
Как снять с файла признак что он занят другим пользователем Chelentano Microsoft Office Excel 1 12.08.2009 10:56