Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение текстовых файлов [D5, Win2k]


Страницы:   1 2

NJoe ©   (2004-07-13 10:08:00) 

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


NJoe   (2004-07-13 14:12:00) [1]

Всем спасибо.


sniknik   (2004-07-13 14:00:00) [2]

> Еще в текстовом файле может быть EOF(1A)
точно, я этот символ спутал (говорил #$90), почемуто так запомнилось, но вот представление его визуальное сразу узнал '→'. ;о)
сорри за невольную дезу.


Anatoly Podgoretsky   (2004-07-13 13:20:00) [3]

NJoe   (13.07.04 12:18) [20]
Для случая ANSI ASCII
Сделай таблицу недопустимых символов. Это коды от 0..31, за вычетом - Bell(7), BacкSpace(8), Tab(9), LF(10), CR(13)
Как только встретится хоть один код из этого набора, считай файл не текстовым. Еще в текстовом файле может быть EOF(1A), но только последним символом файла. Кроме того из этого множества можно будет исключить при необходимости и ряд других символов, например FF(12)

ASMiD   (13.07.04 12:19) [21]
Мэтр, помоему это не есть возможно строго определить.

Интересует только его определение, в соответствии с ним и строится алгоритм отбраковки.


sniknik   (2004-07-13 12:54:00) [4]

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

> По-моему достаточно необычно в бреде или блокноте набирать текст в уникоде :)
ты этого можеш даже не заметить, если откроеш такой файл в блокноте правка его ничем не будет отличатся от того что ты называеш обычным. но вот если потом посмотреть в бинарном представлении...


ASMiD   (2004-07-13 12:38:00) [5]

Есть идея для русскоязычного текста.
Посчитать сумму первых n-байт и, если она >128 то опять же с высокой долей вероятности это - текстовый файл.
c значением n можно поэкспериментировать.


NJoe   (2004-07-13 12:33:00) [6]

дык про уникод речь и не идет. По-моему достаточно необычно в бреде или блокноте набирать текст в уникоде :)


sniknik   (2004-07-13 12:27:00) [7]

> Текстовые файлы, содержащие картинки и команды для принтера, имхо, не обычные текстовые файлы. %)
а те которые сейчас (новые), и содержат строки в юникоде?
создай к примеру udl файл (это текстовый файл с описанием конекта, но записан в юникоде) так там через один символы #0 повторяются! а будет руское название или французкое к примеру то в зависимости от кодировки будет чередоваться другим символом.
тоже необычно? ;о))


ASMiD   (2004-07-13 12:19:00) [8]

Мэтр, помоему это не есть возможно строго определить.


NJoe   (2004-07-13 12:18:00) [9]

Файл, набранный в блокноте без зажимания alt с цифирями :)))
енто я так понимаю ОБЫЧНЫЙ (ногами не бить:)


Anatoly Podgoretsky   (2004-07-13 12:15:00) [10]

NJoe   (13.07.04 10:08)  
Дай точное определение текстовых файлов


ASMiD   (2004-07-13 12:15:00) [11]

Ессессно, потому и вероятность.
Но все попроще проверить конец на #13#10 или #13#10#$90 или #$90, а далее все равно не плохо уточнить.


NJoe   (2004-07-13 12:12:00) [12]

Вообщем так... под ОБЫЧНЫМИ текстовыми файлами, созданными в винде имею в виду те, которые содержат символы #32-#175 (зависит от шрифта) плюс управляющие разметкой текста. Текстовые файлы, содержащие картинки и команды для принтера, имхо, не обычные текстовые файлы. %)


sniknik   (2004-07-13 12:07:00) [13]

ASMiD   (13.07.04 12:03) [15]
раньше завершаюшим текста был #$90, есть шанс нарватся и на это.


ASMiD   (2004-07-13 12:03:00) [14]

Если файл текстовый, то в самом концестоит с огромной долей вероятности #13#10


sniknik   (2004-07-13 12:03:00) [15]

кстати если ты не знаеш что такое эскейп последовательность.
это начинающаяся с #27, последовательность служащая для управления (обычно принтера, но вроде еще есть драйвер какойто в досе (ansy (???)) тоже аналоичное принимает)
последовательность может включать любыесимволы, обычно это команды принтера (#1#2#3 тоже есть как и #255). так же можно этими последовательностями менять шрифт, внести свой, передать картинку, и.т.д.
понимаеш что это значит? картинка в тексте, какие там символы будут?

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


NJoe   (2004-07-13 11:59:00) [16]

а как часто в текстовиках используется #17 или #6?
◄ ♠


sniknik   (2004-07-13 11:52:00) [17]

> ясен перец, что проверять недопустимые для текстовиков символы.
так они вседоступны для текстовиков. придумай чтонибудь другое.


NJoe   (2004-07-13 11:40:00) [18]

:)))
ясен перец, что проверять недопустимые для текстовиков символы. А начало не подходит из-за свойств некоторых юзаемых бинарников. Вообщем фсем спасибо...


han_malign   (2004-07-13 11:30:00) [19]

> Видимо придется проверять по рандомному куску
- а чем тебя начало не устраивает?
Проверять надо не по "именно фсякие табы, ретурны и иже с ними", а как раз наборот - наличие запрещенных(непечатаемых) символов(достаточного относительного количества, оценку придется самому искать) означает что файл не текстовый


NJoe   (2004-07-13 11:09:00) [20]

ясен... текстовый файл не обязательно имеет расширение txt. Бинарники создаются не мной, сигнатуры нет или слишком много вариантов. Под управляющими я имел ввиду именно фсякие табы, ретурны и иже с ними.
Видимо придется проверять по рандомному куску ...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо