![]() |
|
|
![]()
|
|
| SerK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Есть файл, можно ли определить текстовый это файл или нет?
-------------------- Пусть будет миру хорошо! |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
SerK, что такое текстовый файл? Добавлено через 14 минут и 47 секунд http://ru.wikipedia.org/wiki/Текстовый_файл Это сообщение отредактировал(а) Alca - 22.9.2009, 14:36 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
С большой долей вероятности файл, который разбит на порции не более 255 байт с символами 0d0a между порциями будет текстовым.
Метод подходит только для ANSI |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
А каким образом AkelPad определяет? Он же пишет при попытке открыть "файл бинарный, продолжить?".
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 1 Всего: 37 |
В любом бинарном файле, хоть раз будет присутствовать, к примеру, 0x00 байт. А в текстовых файлах такого и быть не может. В результате, мы приходим к выводу, что тот же AkelPad должен проверять на наличие невидимых (управляющих) символов (байт), в результате чего он и делает вывод бинарный это файл или текстовый.
P.S.: Объяснил топорно, но на мой взгляд так будет понятней. P.P.S.: Откройте любой текстовый файл в Hex редакторе и в середину воткните пустой байт. А затем откройте AckelPad-ом (с AckelPad не пробовал, у меня EmEditor - сразу сказал что это бинарный файл). Это сообщение отредактировал(а) t_gran - 24.9.2009, 06:31 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
надо посмотреть его исходники. Добавлено через 1 минуту и 14 секунд это я правильно понял - что надо пропарсить сначала весь текст на наличие 0x00? |
|||
|
||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 1 Всего: 37 |
Нет, конечно. P.S.: И не обязательно это должен быть 0x00 байт. Это сообщение отредактировал(а) t_gran - 24.9.2009, 09:02 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
хочется увидеть пример, а не теорию камрад. вот к примеру дельфяцкие парни сделали так. реализация не совсем кошерная - но тем не менее:
|
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
думаю должно быть тогда что то вроде этого.
up. какие ваши предложения? Это сообщение отредактировал(а) mrbrooks - 24.9.2009, 09:34 |
|||
|
||||
| t_gran |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 1 Всего: 37 |
mrbrooks, видать у нас разные понятия о слове ПАРСЕР. А на счёт кода, вот, что я имел в виду:
Вызов:
Выводит текст если файл текстовый, иначе сообщает об этом. Естественно в пример воткнул проверку только на 0x00 байт. Кстати, mrbrooks, предыдущий пример, очень грамотен в плане загрузки блока в память, т.к. посимвольно считывать - это большие временные расходы. А вот сравнение лучше сделать по принципу хеширования, т.к. иначе на каждый символ придётся выполнять множество проверок, что в результате приведёт, опять же, к накладным временным расходам. P.S.: mrbrooks, +1. Приятно было по дискутировать. Это сообщение отредактировал(а) t_gran - 24.9.2009, 10:34 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
ну в эпоху dot.NET это уже не совсем актуально. Хотя конечно с TFileStream позволяет считать и во временный буфер. Проанализировать его - уже дело техники. Я же ратовал за сам подход, нежели реализацию. Согласный |
|||
|
||||
| SerK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 31.3.2007 Репутация: нет Всего: нет |
Друзья, спасибо всем за участие, но, к сожалению, я так и не понял, - как решить проблему определения текстового файла (если можно с кодом).
P.s. Alca, текстовый файл это именно то, что указанно в вашей ссылке, а не файл с расширением .txt. -------------------- Пусть будет миру хорошо! |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
SerK, блин. мы же тебе написали решения. я и t_gran - выбирай и дорабатывай
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |