просмотрел тему и у меня сложилось впечатление, что некоторое недопонимание между тобой и теми, кто тебе отвечал связано тем, что тебе нужно разобрать ДВА вопроса, а не ОДИН:
1. Чем отличается бинарное (внутреннее, машинное) редставление чисел от текстового (форматного).
2. Для чего нужен типизированный файл.
1. Внутри компьютера числа находятся в бинарном виде. Так же они могут быть и сохранены на диске. Т.е. область диска (файл) может быть просто копией фрагмента оперативной памяти. Но разобрать что-либо в таком файле глазами совершенно невозможно. Поэтому прибегают к текстовому представлению информации. При этом дробное число, занимающее в памяти (или бинарном файле), скажем, 4 байта, в виде текста займет уже 12 байт - да и то с потерей точности. Опять же, Паскаль скрывает этот факт, но операторы read и write с текстовыми и бинарными файлами работают совершенно по-разному: при работе с текстом каждый символ подвергается достаточно сложным преобразованиям. Таким образом, разработчику всеегда риходится решать, какому формату файла отдать предпочтение в конкретной программе.
Если нам надо хранить, скажем, 8 Мбайт данных, то
- бинарное представление: длина файла - 8 Мбайт, время чтения - 0.1 с, глазами ничего не увидишь,
- текстовое представление: длна файла - 96 Мбайт, время чтения - 50 с, можно посмотреть глазами.
Что ты в данном случае предпочтешь?
А если надо записать всего десяток чисел, которые и в том, и в другом случае будут занимать один сектор на диске и читаться практически мгновенно?
2. Вообще-то он не нужен. Т.е. без него легко можно обойтись, заменив файлом нетипизированным. Но в некоторых случаях удобнее работать с типизированным.
Твой пример к таковым не относится: если ты работаешь с вещественными числами, то разницы между типизированным и нетипизированным практически нет.
А когда же появляется разница?
Тогда, когда тебе нужно работать не с простым, а со сложным типом данных. Ну например:
type
t3DPoint = packed record
x,y,z : single; // координаты точки в пространстве
u,v : byte; // текстурные координаты
end;
Длина такого типа данных составляет 14 байт и, чтобы не запутаться, лучше объявить фвйл как file of t3DPoint. Одновременно, если ты запросишь длину файла, то тебе будет возвращено именно количество точек, а не количество байтов.
Сообщение отредактировано: andriano -