Расширение текстового файла: типы и основные аспекты определения принадлежности к программам. Текстовый файл Какая программа имеет расширение txt

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

Преимущества и недостатки

Преимущества:

  • Универсальность - текстовый файл может быть прочитан (так или иначе) на любой системе или ОС , особенно если речь идёт об однобайтных кодировках вроде ASCII , которые не подвержены проблеме, характерной для других форматов файлов - для них не важна разница в порядке байтов или длине машинного слова на разных платформах .
  • Устойчивость - каждое слово и символ в таком файле самодостаточны и, если случится повреждение байтов в таком файле, то обычно можно восстановить данные или продолжить обработку остального содержимого, в то время как у сжатых или двоичных файлов повреждение нескольких байтов может сделать файл совершенно невосстановимым. Многие системы управления версиями рассчитаны на текстовые файлы и с двоичными файлами могут работать только как с единым целым.
  • Формат текстового файла крайне прост и его можно изменять текстовым редактором - программой, входящей в комплект практически любой ОС .

Недостатки:

  • У больших несжатых текстовых файлов низкая информационная энтропия - эти файлы занимают больше места, нежели минимально необходимо. Хотя эта избыточность и определяет повышенную устойчивость к сбоям в каналах передачи данных и при получении данных с носителей , например, с магнитной ленты .
  • Некоторые операции с текстовыми файлами неэффективны. Например, если в файле встретится число, вычислительная система до начала операций с ним должна будет перевести его в свой внутренний формат, применив сравнительно сложную процедуру конвертации числа; чтобы перейти на 1000-ю строку, требуется считать 999 строк, идущих до неё; сложно заменить одну строку другой и т. д. Поэтому при работе с большими объёмами данных текстовые файлы применяют только как промежуточный формат, обеспечивающий интероперабельность .

Форматы, основанные на текстовых файлах

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

Текстовый формат служит основой для многих более специализированных форматов (например, .ini , SGML , HTML , XML , TeX , исходных текстов языков программирования). В некоторых из таких форматов определённые сочетания символов могут использоваться как средства разметки текста. В таком случае файл может хранить форматированный текст, в котором для символов дополнительно может быть задан шрифт, начертание, размер и т. п. (например, Rich Text Format , HTML).

Расширения имён файлов

В DOS и Windows для файлов с неформатированным текстом обычно используется расширение .txt . Тем не менее, текстовыми могут являться файлы с любым другим расширением или без оного. Например, исходные коды программ обычно хранятся в файлах с расширениями, соответствующими языку программирования , на котором написаны программы (.bas , .pas , .c).

Форматированный текст (текст с разметкой) обычно хранится в файлах с расширением, соответствующим формату или языку разметки - .rtf , .htm , .html .

Кодировки

8-битный текст

Исторически для кодирования текстовых файлов применялись 7-битный набор символов ASCII , а также 8-битные EBCDIC и различные расширения ASCII. В 8-битных кодовых страницах общепринято использовать в первой половине кодовой таблицы символы, соответствующие ASCII.

Преимуществом 8-битного представления текста является программная простота и независимость от проблемы порядка байтов или длины машинного слова на разных платформах. Недостаток - большое количество различных стандартов, что может приводить к несовместимости .). Иногда в начало файла добавляют специальный символ-маркер (U+FEFF

Такой разнобой продиктован принципами работы пишущих машинок: чтобы перейти на новую строку, надо вернуть каретку в начало строки (carriage return ), а затем провернуть барабан на одну строку (line feed ). При печати на принтере тот и другой символ мог стоять обособленно (например, чтобы выделить строку, пропечатав её дважды, или прокрутить барабан на несколько строк), но в текстовых файлах в этом нет нужды.

Помимо названных, в текстовых файлах встречаются такие символы, как табуляция (код 9) и перевод страницы (код 0xC). Последний использовался старыми текстовыми редакторами наподобие ЛЕКСИКОН , а также в файлах, предназначенных для распечатки на принтере.

Файл (англ. file — скоросшиватель) — концепция в вычислительной технике: сущность, позволяющая получить доступ к какому-либо ресурсу вычислительной системы и обладающая рядом признаков:

  • фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);
  • определённое логическое представление и соответствующие ему операции чтения/записи.

Может быть любой — от последовательности бит(хотя читаем именно байтами, а точнее словами-группами из байт, по четыре, по восемь, по шестнадцать) до базы данных с произвольной организацией или любым промежуточным вариантом; многомерной базой данных, строго упорядоченной.

Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму — команды СУБД. Промежуточные варианты — чтение и разбор всевозможных форматов файлов.

(Материал из Википедии — свободной энциклопедии)

Господи, какой бред (© olivur77).

Вы что-нибудь поняли? Я нет. Определение в википедии, конечно, скорее всего корректно, но никакого понимания для простых смертных (таких как я) оно не дает.

Что такое файл? Объяснение на нормальном языке.

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

Вы никогда не задумывались, почему щелкая мышкой «по маленькой фотографии» (), открывается программа (тоже файл, а иногда несколько файлов) для просмотра фотографий? Когда щелкаем по ярлыку с фильмом (), запускается программа для просмотра фильма? Когда щелкаем по ярлыку (кстати тоже файл) для халявного общения (например ), открывается программа, по которой мы бесплатно общаемся с друзьями и родственниками, да еще и видим друг друга?

Почему так происходит? Если Вы думаете, что операционная система Windows такая умная, то Вы глубоко ошибаетесь.

Я хочу развеять миф об «умности» операционной системы Windows и поближе познакомить Вас такими понятиями как «файл», «расширение», «формат» .

Слова на первый взгляд страшные и непонятные, но на самом деле все довольно просто и в этом мы скоро убедимся.

Давайте сделаем одну настройку (как показано на рисунке ниже), которая поможет нам разобраться с этими понятиями.

Нажимаем кнопку «Пуск», выберем «Панель управления»(если хотите подробнее узнать что это такое, пройдите ). Если у Вас вид «Панели управления» не такой, как на картинке (а, скорее всего «вид по категориям», так как этот вид установлен по умолчанию), то щелкните левой кнопкой мыши по надписи «Переключение к классическому виду».

Затем щелкните два раза быстро левой кнопкой мыши по значку «Свойства папки» — Вам откроется настройка свойств папок. По умолчанию Вы попадаете на вкладку «Общие». Щелкните левой кнопкой мыши по вкладке «Вид».

Уберите галочку напротив «Скрывать расширения для зарегистрированных типов файлов», щелкнув по ней левой кнопкой мыши. Если у Вас не видно этой надписи, воспользуйтесь правым ползунком (полоса прокрутки) и «промотайте» в конец меню (подведите указатель мышки на ползунок, нажмите левую кнопку мыши и удерживая кнопку нажатой, перетащите ползунок вниз).

Как создать файл? На примере txt.

Начнем с простого примера. Создадим на своем рабочем столе обычный текстовый документ (файл). Сделаем мы это следующим образом.

Расположите указатель мыши (курсор) в области рабочего стола, где нет ярлыков. Щелкаем правой кнопкой мыши, выбираем левой кнопкой мыши «Создать» — «Текстовый документ».

На рабочем столе должен появиться ярлычок с изображением «перекидного блокнота на пружинках как бы с текстом» под названием «Текстовый документ.txt».

Говоря компьютерным языком, мы создали текстовый файл. Обратите внимание, что помимо понятных нам слов, в названии файла есть какая-то точка и непонятные три английские (латинские) буквы. К чему это все и для чего это надо? Давайте по порядку.

Текстовый документ.txt — это, собственно, название самого файла, которое состоит из:

    1. Имени

В данном случае имя файла — Текстовый документ (В принципе, имя файла может быть любым, состоять из одного или нескольких слов, может включать в себя специальные символы, например подчеркивание, тире или пробел. В нашем случае имя файла состоит из 2-х слов и одного специального символа (как ни странно) — пробела. т. е. если для нас это понятное сочетание слов Текстовый документ, то компьютер воспримет это имя как Текстовыйпробелдокумент (Это для справки, к нашей теме это никакого отношения не имеет. Просто с этим Вы в дальнейшем можете столкнуться, так чтобы это не было для Вас неожиданностью).

    1. Разделителя

Точка (.) — это символ, который разделяет имя файла и расширение файла. Почему именно точка? Исторически с покон веков. Просто так решили давным давно, когда только зарождались программы. Да в общем-то и симпатично — ничего лишнего и глаз не режет.

    1. Расширения

Само слово расширение, мне кажется, понять проще. Вот есть имя файла, его взяли да и расширили какими-то буквами и название файла стало шире (ну или длиннее). В нашем случае расширение имеет вид txt . Вот это вот txt и указывает операционной системе (Windows), какой программой открывать этот файл, чтобы мы могли посмотреть (прочитать), что там написано в этом файле (в данном случае текстовый файл), ну или написать туда что-нибудь. Еще говорят, что этот файл текстового формата (о форматах подробнее чуть позже).

Если пока понятно, что такое расширение файла , то я дам взрослую формулировку: Расширение файла указывает операционной системе на его формат, в нашем случае файл имеет формат txt.

Я долго думал, делать экскурс в историю в рамках этой темы или нет, но все-таки решил написать, так как в этом экскурсе Вы найдете еще несколько ответов на вопросы «почему …».

Когда-то давно, когда компьютеры были большими и слабенькими , не было той красивой разноцветной графики, которую Вы видите сейчас на экране монитора своего компьютера, да и называть компьютеры в Советском Союзе было принято ЭВМ (электронно — вычислительная машина или ПЭВМ, где «П» означало персональная), а программистов математиками. Тогда на экране монитора можно было видеть только текст белого или зеленого цвета на черном фоне. Компьютеры тогда были 8-разрядные (не забивайте сейчас этим себе голову, примите на веру). Борьба тогда шла за каждый бит информации. Разрабатывались различные стандарты.

Так вот в эту эпоху и было принято одно из решений, что название файла будет иметь вид имя/разделитель/расширение.

Опять же из-за скудности ресурсов, под имя файла выделили 8 символов (скажем так, не более 8-ми символов, т. е. меньше можно, а больше 8-ми нельзя), разделителем сделать точку, а для расширения отвести только 3 символа (буквы).

Шло время. Прогресс не стоял на месте. Компьютеры стали маленькими и мощными с прекрасной красивой цветной графикой, которая радует наш глаз. Разрядность персональных компьютеров увеличилась уже в 8 раз. И теперь перед Вами теперь находится 32-х или 64-х разрядный компьютер с 32-х или 64-х разрядной операционной системой (скорее всего Windows).

Поскольку компьютеры стали мощными, то и ограничение на длину имени файла стало не таким критичным. На сегодняшний день это где то до 256 символов.

Так вот. Поскольку имен файлов во всем мире миллиарды и эти имена могут быть любыми, то и этих 256 символов за глаза хватает. Интереснее с расширениями. На самом деле форматов файлов не так уж и много (относительно конечно) и до сих пор хватает, в общем-то, и 3-х символов. Сейчас есть и 4 символа (есть и больше) в расширении файлов, но это скорее преемственность. Например, файл, созданный тестовым редактором Word из пакета Microsoft Office 2003 имеет расширение.doc, а файл, созданный тестовым редактором Word из пакета Microsoft Office 2007 (более свежая версия этого пакета), имеет расширение.docx.

Еще один интересный момент. Как только компьютеры достигли своего развития, когда на мониторах начала появляться графика, а не только текст, тогда же появились и ярлыки (Да, собственно, и манипулятор мышь. Мыши советского производства имели довольно большой размер, поэтому их презрительно называли крысами). Так вот маленькие картинки на ярлыках (в нашем случае это изображением «перекидного блокнота на пружинках как бы с текстом») — это тоже часто отдельные файлы, в то время, в основном, имели расширение.ico сокращение до 3-х символов английского слова icon, которое в английском языке означает икона, символ, знаковый образ. С тех пор эти маленькие изображения называют иконками. Другие названия этих маленьких изображений — пиктограмма, значок.

И так, вернемся к нашим баранам, т. е. к файлу «Текстовый документ.txt» на нашем рабочем столе.

Щелкаем левой кнопкой мыши 2 раза быстро по ярлыку созданного нами файла «Текстовый документ.txt». Гм. (А вот интересно, у Вас получается для открытия файла 2 раза быстро по нему щелкнуть? Причем мышку в это время двигать нельзя, потому что если сдвинем мышку между щелчками это самое открытие не сработает. У меня получается через раз. За 15 лет я так и не научился 2 раза подряд быстро щелкать левую кнопку мыши. Наверно мои кривые руки, скорее всего, заточены под кувалду. Поэтому я пользуюсь старым «дедовским» методом, который экономит мои нервные клетки.) Я, правда, открываю файлы по другому. Щелкаю правой кнопкой мыши по ярлыку, выбираю в меню самый верхний пункт меню «Открыть» и нажимаю по нему левой кнопкой мыши. (Мы очень часто пользуемся мышкой. Если вы не умеете или плохо с ней работаете, то можете пройти два урока о и о )

Что мы видим? Мы видим пустой файл, открытый программой «Блокнот» (пустой, потому что мы туда еще ничего не писали — это недолго сделать, напишем еще).

Кстати, давайте и напишем. Мне, как человеку по жизни ленивому, просто набирать текст на клавиатуре влом. Тем более, когда это можно и не делать. Я его (текст) просто откуда-нибудь скопирую. Чтобы текст был осмысленным и полезным по жизни, я скопирую сюда из интернета рецепт моих любимых блинчиков. Они получаются настолько тонкие, что даже просвечиваются.

Пусть наш текстовый документ остается на рабочем столе. А мы зайдем в интернет на сайт бесплатного клавиатурного тренажера на страничку по адресу http://stamina.ru/blog/pitanie/blini и скопируем оттуда кусочек рецепта следующим образом.

Подводим указатель мыши к началу текста, который мы хотим выделить, а точнее чуть левее, нажимаем левую кнопку мыши, и, Удерживая кнопку мыши нажатой, «ведем» указатель мыши к концу фрагмента нужного нам текста. Если нас устраивает выделенная область текста, то отпускаем левую кнопку мыши и тут же нажимаем на правую кнопку мыши (на рисунке описан другой вариант того_же самого действия). Появиться меню, в котором подводим указатель мыши к пункту меню «Копировать» и щелкаем левой кнопкой мыши.

Ну и возьмем какой-нибудь эталонный диск. К примеру на компьютере есть диск «G:» размером 10 Гб (гигабайт). Или если в байтах 10 000 000 000 байт (на самом деле немного больше, но для нас это сейчас не принципиально).

Нетрудно подсчитать, что таких файлов, как наш «Рецепт блинчиков.txt» на этом диске поместится: 10 Гб делим на наши 507 байт и получается примерно 19 723 866 файлов (на самом деле немного меньше, но для нас это сейчас тоже не принципиально).

Грубо говоря на нашем диске в 10 Гб мы можем разместить 20 миллионов таких файлов, как наш «Рецепт блинчиков.txt».

На этом я хочу закончить 1-ую часть статьи, в которой на примере простого текстового файла, мы начали рассматривать значение таких понятий как «файл», «формат», «расширение». В , мы рассмотрим эти понятия уже на более «тяжелых» форматах файлов таких как файлы изображений, музыкальные и видео файлы, ну и многое другое, что этому сопутствует.

На этом все. Всем удачи и творческих успехов. 🙂

P.S. Так же читайте вторую часть статьи, о и третью — о .

С текстовыми файлами (документами) мы сталкиваемся чуть ли не ежедневно. Однако в данном вопросе не следует путать расширение текстового файла и текстовый формат данных, это разные вещи. Попробуем определиться, что собой представляют файлы такого типа, и какими они бывают.

Расширение текстового файла: что это такое?

Начнем с того, что, как правило, большинство файлов такого типа имеют расширение в виде трех литер после разделителя (точки). Самый простой и наиболее часто встречающийся тип - это файлы с расширением.txt, открываемые в тех же системах Windows при помощи стандартного «Блокнота».

Однако, несмотря на общепринятые правила, расширения файлов текстовых документов могут содержать не три литеры, а больше (их число может достигать двенадцати, но не больше), например, файлы электронных книг.djvu. Кроме того, в расширении могут присутствовать цифры.

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

Однако не стоит забывать, что сегодня можно встретить достаточно большое число файлов с одинаковыми расширениями, но созданные в других приложениях или сопоставленные разным программам. Казалось бы, обычный файл с расширением.doc (.docx) изначально соответствует текстовому редактору Microsoft Word. Но ведь открыть его или сохранить в таком виде можно и в другом даже на «яблочных» компьютерах. Сюда же можно отнести и, так сказать, смешанный тип - файлы формата.pdf, содержащие уже не только текст, но и графику. Но ведь и документы Word могут содержать вставленные изображения.

Именно это и служит показателем того, что расширение текстового файла свидетельствует об универсальности самого формата, который является наиболее «читабельным» независимо даже от применяемой операционной системы. То же самое касается и любого типа.

Типы расширения файлов: текстовые

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

Да, конечно, универсальность таких документов не вызывает сомнений, особенно если в них используется простейшая Но иногда проблема может заключаться в том, что не всякая кодировка поддерживается определенной системой или программой. Именно поэтому на экране вместо привычных букв появляется набор символов.

Что же касается разновидностей текстовых файлов, их все и не перечислишь. Наиболее распространенными являются следующие: .txt, .doc, .tex, .text, .pdf, .log, .apt, .ttf, .err, .sub, .djvu, .odt, .rtf и многие другие. Этот список можно продолжать до бесконечности.

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

Заметьте, даже исполняемые файлы могут иметь текст в качестве содержимого. Простейший пример - файл.bat, создаваемый в обычном «Блокноте» и содержащий текст в виде набора команд. При запуске происходит выполнение команд, а для редактирования используется меню «Открыть с помощью…», если изначально этому процессу не сопоставлено другое действие.

Подобная ситуация наблюдается и с документами, использующими разметку или языки программирования, скажем, файлы.html, .htm, .xml и т.д. Даже веб-страницы можно во многих редакторах открыть изначально как текстовые файлы, содержащие сторонние элементы.

Изменение расширений текстовых файлов

Что касается изменения расширения, иногда его можно поменять, например, .txt в.doc и обратно. Редактор Word откроет любой тип. То же самое относится к паре.txt - .bat при открытии в «Блокноте». Но в других случаях лучше такие манипуляции не производить, это попросту ни к чему не приведет, и другое приложение переименованный файл открыть не сможет. Изменение формата придется производить при помощи специальных программ-конверторов.

Вместо послесловия

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

ТЕМА №10: ФАЙЛЫ. ТИПИЗИРОВАННЫЕ ФАЙЛЫ. ТЕКСТОВЫЕ ФАЙЛЫ.

Основные понятия

Файлы – это поименованная структура данных на техническом носителе, представляющая собой последовательность элементов (записей) одного типа.

Файлы – это массив переменной длины неограниченного размера.

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

Отличие файла от массива:

А) размещение на внешнем носителе;

Б) длина файла не задается;

В) место элемента не определяется индексом.

Для обозначения файла и работе с ним используется файловая переменная (ФП).

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


Особенности файловой переменной:

Ей нельзя присваивать какие-либо значения

Она не может участвовать в логических операциях

Она не может входить в математические выражения

Объявление файловой переменной

Файл объявляется в разделе описания переменных с указанием типа элементов файла.

Тип файла

Описание файла

Типизированный

Var F1: file of integer;

F2: file of char;

Не типизированный

Текстовый

РАБОТА С ФАЙЛОМ

А) ЗАПИСЬ В ФАЙЛ

Assign(ФП, ‘Name’);

Открываем файл для записи

Записываем данные в файл

Write(ФП, Данные);

Writeln(ФП, Данные); - для текстовых

Закрываем файл

Б) ЧТЕНИЕ ИЗ ФАЙЛА

Связываем файл (можно не существующий) с именем Name с файловой переменной (ФП)

Assign(ФП, ‘Name’);

Открываем файл для чтения (указатель устанавливается на первый элемент)

Читаем данные из файла в переменные и передвигаем указатель файла вперёд.

Read(ФП, Переменные);

Readln(ФП, Переменные); - для текстовых

Закрываем файл

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

ОПРЕДЕЛЕНИЕ ДЛИНЫ ТЕКСТОВЫХ ФАЙЛОВ

В Паскале нет команды, которая бы определяла количество строк, записанных в текстовый файл. Однако есть функция, которая подсказывает момент, когда указатель файла достиг последней строки - EOF (End Of File)

EOF (ФП) – функция подтверждающая

достижение конца текстового файла

Если конец файла достигнут, то EOF (ФП) равняется true.

Если конец файла не достигнут, то EOF (ФП) равняется false.

Пример чтения текстового файла, в котором находится неизвестное нам количество строк. В конце программы выведем количество строк на экран.

Var f: text; N:integer; s:string;

Assign (f, ‘c:\MyText. txt’);

While Eof(f)=false do { можно записать эту строчку короче: While not Eof(f) do }

Writeln ("В файле c:\MyText. txt ", N, " строк");

ОПРЕДЕЛЕНИЕ ДЛИНЫ ДВОИЧНОГО ФАЙЛА

Для двоичных типизированных файлов применим способ, который используется при чтении текстовых файлов. Функция EOF работает одинаково и для текстовых и для двоичных фалов.

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

FileSize (ФП) – функция, возвращающая длину двоичного файла

Программа, читающая все числа из двоичного целочисленного файла и находящая их сумму:

Var f: file of integer;

Summ, i, T:integer;

Assign (f, ‘c:\MyFile. int’);

For i:=1 to Filesize(f) do { можно использовать другой цикл: While not Eof(f) do }

Writeln ("Сумма чисел, в файле c:\MyFile. int равна ", Summ);

Writeln ("Длина файла c:\MyFile. int ", FileSize(f), " чисел");

ПЕРЕМЕЩЕНИЕ ПО ДВОИЧНОМУ ФАЙЛУ

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

SEEK (ФП, Позиция) – перемещает указатель

в заданную позицию файла

Программа, обнуляющая число в заданном месте двоичного вещественного файла и дописывающая это число в конец файла.

Var f: file of real; {объявляем файловую переменную для вещественного файла}

N:= FileSize(f); {определим количество чисел в файле}

Repeat {начало цикла}

Writeln("В файле ‘, N, ‘ чисел’);

Writeln("Введите номер числа, которое надо перенести в конец файла?’);

Until (Poz>=0) and (Poz<=N) {выход из цикла, только если в данном файле такая позиция существует}

Seek(f, Poz); {позиционируем указатель файла на заданную позицию}

Read(f, R); {читаем число из заданной позиции файла в переменную R, указатель перемещается на одну позицию вперёд}

Seek(f, Poz); {возвращаем указатель в заданную позицию}

Write(f, Null); {обнуляем число в котором установлен указатель}

Seek(f, N); {перемещаем указатель в конец файла}

Write(f, R); {записываем число из переменной R в конец файла}

УМЕНЬШЕНИЕ ДВОИЧНЫХ ФАЙЛОВ

Чтобы сократить двоичный файл, надо установить указатель файла в то место, дальше которого расположена лишняя информация и отсечь лишнюю часть процедурой Truncate.

Truncate (ФП ) процедура, отсекающая данные, расположенные после указателя файла

Программа, оставляющая в двоичном файле только первые 10 чисел :

Var f: file of real; {объявляем файловую переменную}

Assign (f, ‘c:\MyRealFile. rlf’); {связываем файловую переменную с файлом}

Reset (f); {открываем файл для чтения и записи}

Seek(f, 10); {позиционируем указатель файла на заданную позицию}

Truncate (f); {отсекаем от файла всё, что расположено дальше указателя файла}

ДОБАВЛЕНИЕ ИНФОРМАЦИИ В ТЕКСТОВЫЕ ФАЙЛЫ

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

A ppend (ФП) – процедура, открывающая текстовый файл

для добавления строк

Программа, дописывающая в конец текстового файла две строки:

Var FT: text; s: string;

Assign (FT, ‘q. txt’);

S:=’Первая добавленная строка’; Writeln (FT, S);

S:=’Вторая добавленная строка’; Writeln (FT, S);

ПЕРЕИМЕНОВАНИЕ, ПЕРЕНОС ФАЙЛА

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

Поэтому в Паскале одна и та же команда осуществляет и переименование файла, и перенос файла между каталогами.

ReName (ФП , Новое_название_файла) процедура, переименовывающая файл и переносящая его в каталог,

указанный в Новом названии файла.

Команда Rename работает только с закрытыми (или ещё не открытыми) файлами. Поэтому перед её применением не надо открывать файл для чтения, записи или добавления данных. Либо, если файл уже открыт его следует предварительно закрыть.

Программа, должна дать файлу ‘q1.txt’ новое имя, которое введёт пользователь, и перенести файл ‘ q 2. txt ’ в каталог ‘ c :\ Document \’.

Var FT: text; s: string;

Assign (FT, ‘q1.txt’); { связываем файловую переменную с файлом }

Writeln (‘Введите новое имя для файла q1.txt’);

Readln(s); { читаем с клавиатуры новое имя файла в переменную s}

Rename (FT, s); { переименовываем файл}

Assign (FT, ‘q2.txt’); { связываем файловую переменную со вторым файлом }

Rename (FT, ‘c:\Document\q2.txt’); { переносим файл в заданный каталог с тем же именем}

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

КОПИРОВАНИЕ И УДАЛЕНИЕ ФАЙЛА

Копирование : Чтобы скопировать файл необходимо прочитать все записи одного файла и записать их во вновь созданный файл.

Удаление: Чтобы удалить файл достаточно применить к файловой переменной (связанной с закрытым файлом) процедуру Erase.

ERASE (ФП ) процедура, удаляющая файл, связанный с файловой переменной.

Программа копирует файл с диска "C" на ди c к ‘ D ’и удаляет оригинал с диска "C" (фактически программа переносит файл с одного диска на другой)

Var f1, f2: file of byte;

Assign (f1, ‘c:\MyFile. int’); Reset (f1); {открываем для чтения файл образец}

Assign (f2, ‘d:\MyFile. int’); Rewrite (f2); {создаём файл на диске D}

While not Eof(f1) do

Read (f1, b); {читаем данные из файла оригинала}

Write (f2, b); {записываем данные в новый фал}

Close (f1); {закрываем файла образец, перед удалением файл должен быть обязательно удалён}

Close (f2); {закрываем новый файл}

Erase (f1); {удаляем файл}

РАБОТА С КАТАЛОГАМИ

MkDir (Имя каталога) – процедура создаёт новый каталог

(Если каталог с таким именем существует, то возникнет ошибка)

RmDir (Имя каталога) – процедура удаляет каталог

(Удалить можно только пустой каталог)

ChDir (Имя каталога) – процедура изменяет текущий каталог

(Текущий каталог – это каталог, путь к которому не обязательно указывать при работе с файлами. При включении программы, текущим каталогом является каталог, в котором находится программа.)

Для переименования каталога необходимо:

а) Создать новый каталог

б) Перенести туда все файлы

в) Удалить старый каталог

Программа переименовывает каталог "c:\Cat\", в котором расположено два файла "q1.txt" и "q2.ini", в каталог "c:\CatNew\’ и делает каталог текущим.

Var f1,f2: file of byte; b:byte;

MkDir("c:\CatNew"); {создаём новый каталог}

{копируем в новый каталок файл q1.txt}

Assign (f1, ‘c:\Cat\q1.txt’); Reset (f1);

Assign (f2, ‘c:\CatNew\q1.txt’); Rewrite (f2);

While not Eof(f1) do

Begin Read (f1, b); Write (f2, b); End;

{копируем в новый каталок файл q2.ini}

Assign (f1, ‘c:\Cat\q2.ini’); Reset (f1);

Assign (f2, ‘c:\CatNew\q2.ini’); Rewrite (f2);

While not Eof(f1) do

Begin Read (f1, b); Write (f2, b); End;

Close (f1); Close (f2); Erase (f1);

RmDir (‘c:\Cat’); {удаляем старый каталог}

ChDir (‘c:\CatNew’); {делаем новый каталог текущим}

Поиск файлов

Далеко не всегда программист знает, какие файла располагаются в каких каталогах и какие каталоги размещаются на тех или иных дисках. Поэтому важной темой работы с файлами является поиск файлов (и каталогов).

Для поиска файлов существуют две процедуры, расположенные в модуле WinDos :

FindFirst (Маска, Флаг, Приёмник_информации) – ищет первый файл, который соответствует «маске» и «флагу», в случае обнаружения передаёт данные о найденном файле (каталоге) в переменную типа TSearchRec («приёмник информации»)

Find Next (Приёмник_информации) – ищет следующий файл, соответствующий условиям, поставленным в процедуре FindFirst, в случае обнаружения, передаёт данные о найденном файле (каталоге) в переменную типа TSearchRec («приёмник информации»)

Модуль WinDos содержит, так же переменную Dos Error , которая остаётся равной нулю до тех пор, пока команды поиска обнаруживают файл, соответствующий условию поиска. Если команды поиска не обнаружили файлы, соответствующие условию, то переменная

Маска поиска – строка с именем искомого файла или каталога. Кроме обычных символов маска может содержать «*» и «?».

* - значит, что в искомом файле на данном месте может присутствовать любое количество любых символов;

? – значит, что в искомом файле на данном месте может присутствовать один любой символ.

Примеры масок:

"*.* ’ – любой файл с любым расширением

"quest.* " – файл с название "quest" и любым расширением

"*.txt " – файл с любым названием и с расширением "txt"

"qust?.txt " – файл с расширением ‘txt’, содержащий в названии 5 букв первые 4 из которых ‘qust’, а 5-ый символ любой

"qust*.txt " - файл с расширением ‘txt’, первые четыре буквы которого ‘qust’, количество следующих букв не ограниченно

"q uest . txt ’ – файл с названием "quest" и расширением "txt"

Флаг поиска - набор специальных констант соединённых оператором OR.

Можно вместо констант использовать число, равное сумме чисел с соответствующими константами

Флаг

Тип файла

Число

faReadOnly

Искать с атрибутом «Только для чтения»

faHidden

Искать с атрибутом «Скрытый»

faSysFile

Искать с атрибутом «Системный»

faVolume ID

Возвратить идентификатор носителя

faDirectory

Возвращать информацию о каталогах

faArchive

Искать с атрибутом «Архивный»

faAnyFile

Включить все предыдущие флаги

Примеры флагов:

· faReadOn ly or FaHidden – 3 - ищутся файлы, у которых есть атрибут «скрытый» или «только для чтения»

· faDirectoty or FaSysFile - 20 – ищутся каталоги и файлы, у которых установлен атрибут «Системный»

Приёмник информации – переменная типа TSearchRec, которая будет содержать данные о найденном файле

Тип TSearchRec описан в модуле WinDos и не требует предварительного описания программистом. Данный тип – это запись следующего вида:

Type TSearchRec = Record

Fill: Array of byte; {Системный параметр, нами не используется}

Attr: Byte; {Параметр, содержащий данные о флаге файла}

Time: LongInt; {Время создания файла}

Size: LongInt; {Размер файла в байтах}

Name: Array of Char; {Имя файла}

Допустим у нас есть переменная SR, которая имеет тип TSearchRec. После использования её в команде FindFirst в ней окажется информация о найденном файле (каталоге.)

Информация об имени файла попадёт в SR. Name, о размере файла в SR. Size, а чтобы определить является ли файл системным надо соединить значение SR. Attr с константой FaSysFile оператором And. Файл системный, если результат больше нуля.

Пример :

IF Sr. Attr and FaSysFile > 0 THEN Writeln ("Системный’);

Программа ищет в каталоге "c:\Doc" все файлы с расширением "txt". И выводит на экран название тех, размер которых больше 3000 байт.

Uses Dos, crt, WinDos;

Var SR: TSearchRec; {Описываем переменную в которой будем хранить информацию о найденных файлах}

clrscr; ChDir("c:\Doc"); {Меняем текущий каталог}

FindFirst("*.txt",faAnyFile, SR); {Ищем в текущем каталоге первый файл с расширением "txt’ и любым набором флагов, результат в переменную SR}

while DosError=0 do {выполняем цикл пока файлы находятся}

if SR. Size > 3000 {если размер файла более 3000 байт}

then writeln(SR. Name); {Выводим имя найденного файла на экран}

Программа ищет все каталоги, размещённые на диске в корневом каталоге диска «С» и выводит перечень каталогов в файл "c:\info. txt ’ и на экран (Корневой каталог диска «С»– это каталог "c:\").

Uses Dos, crt, WinDos;

Var SR: TSearchRec; f:text;

Clrscr; Assign (f, "c:\info. txt"); Rewrite(f);

ChDir("c:\"); {Переходим в корневой каталог}

FindFirst("*",faDirectory, SR); {Ищем файл без расширений включая каталоги }

While DosError =0 do {выполняем цикл пока файлы находятся}

if SR. Attr and faDirectory>0 then {если файл имеет атрибут «Каталог»}

Writeln (SR. Name); {выводим имя файл на экран}

Writeln (f, Sr. Name); {выводим имя файл в файл "c:\info. txt"}

FindNext(SR); {Ищем следующий файл}

Процедуры при работе с файловыми переменными

Процедура

Назначение

Замечание

Assign(f, ‘name’)

Связывает файловую переменную с конкретным файлом (привязывает переменную к имени файла). Ставится перед первым использованием файловой переменной.

Можно имя файла ’name’ задавать через строковую переменную (S): Assign(f, S)

Reset(f)

Открывает существующий файл и устанавливает указатель на начало записи.

Для любых файлов

Rewrite(f)

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

Для любых файлов

Close(f)

Закрывает открытый файл

Для любых файлов

Erase(f)

Стирает предварительно закрытый файл

Для любых файлов

Rename(f, f1)

Переименовывает файл f в файл f1. Файл f должен быть предварительно закрыт

Для любых файлов

Read(f, v1,…vn)

Write(f, v1,…vn)

Записывает в файл f значения переменных v1,…vn

Для типизированных и нетипизированных файлов

Readln(f, v1,..vn)

Считывает записи из файла f в переменные v1, ..vn

Writeln(f, v1,.vn)

Записывает в файл f значения переменных v1,..vn

в типизированных файлах недопустимо

Append(f)

Открывает файл и устанавливает указатель на метку конца файла

Применяется для добавления записей

seek(f, n)

Устанавливает указатель на запись с номером n

truncate(f)

Отсекает все записи, находящиеся после указателя и в этой позиции записывает метку конца файла.

Функции при работе с файловыми переменными

Процедура

Назначение

Замечание

Получение сведений о конце файла True, если указатель в конце файла, иначе - False

Логическая функция.

True, если указатель на метке конца строки, иначе - False

Логическая функция. Для текстовых файлов

N:=filesize(F);

Определение количества записей в файле

N:=filepos(f)

Выдает номер записи, на которую указывает указатель записи. Первая запись имеет номер 0.

Примеры программ

ЗАДАЧА 1: Написать программу, записывающую в текстовый файл данные об авторе и 20-ть случайных цифр

randomize; {настраиваем генератор случайных чисел}

rewrite(f); {открываем файл для записи}

r:=random(10); {генерируем случайное число от 1 до 10}

STR(r, s); {преобразуем число r в строку s}

writeln(f, s); {записываем строку с числом в файл}

close(f); {закрываем файл}

ЗАДАЧА 2: Написать программу, читающую из текстового файла данные об авторе и 20-ть случайных цифр

r, i,c: integer;

assign(f,"dddddd. txt"); {связываем файловую перем. с файлом}

reset(f); {открываем файл для чтения}

for i:=1 to 20 do {включаем цикл на 20 повторений}

readln(f, s); {читаем цифру из файла в строку s}

val(s, r,c); {переводим строку “s” в число “r”, в переменной “c” код возможной ошибки}

if c=0 then writeln(r); {если ошибки не было (с=0), то выводим цифру на экран}

close(f); {закрываем файл}

ЗАДАЧА 3: Вычислить корни квадратного уравнения и вывести результаты в файл.

Var a, b,c, x1,x2, d: real;

Assign(f,’result. txt); {связываем файл с файловой переменной f)

Rewrite(f); {открываем файл для записи}

{Читаем исходные данные с клавиатуры и отправляем их в файл}

Writeln(f, ‘решение квадратного ур-я’);

Writeln(f, "a=",a:6:3,"b=", b:6:3,"c=",c:6:3);

{Расcчитываем корни квадратного уравнения}

If d>=0 then Begin X1:=-b+sqrt(d)/(2*a); X2:=-b-sqrt(d)/(2*a); End;

{Выводим результат в файл}

If d<0 then writeln(f,’у урав-я нет корней’)

else writeln(f, ‘корни: x1=’, x1:6:3,’x2=’, x2:6:3);

{Закрываем файл и заканчиваем работу программы}

Writeln(‘рез-ты работы программы в файле result. txt’);

На диске имеется файл с именем Karl. txt, в котором записана скороговорка: "Карл у Клары украл кораллы, Клара у Карла украла кларнет." Требуется подсчитать кол-во букв «К»

Var f:text; s:integer; a:char;

{Связываем файл с файловой переменной и открываем его для записи}

Assign(f,’Karl. txt’); Reset(f);

{последовательно просматриваем все строки файла до последней}

While not eof(f) do

{последовательно читаем все символы строки до последнего в строке и сверяем его с "k"}

While not eoln(f) do

Begin Read(f, a); If a=’k’ then s:=s+1; End;

{переходим на следующую строку файла}

Ввести текст в текстовый файл f1. Переписать строку из файла f1 в f2 – первую половину файла в прямом, а вторую – в обратном порядке следования символов.

Var f1,f2:text; s, snew, sa, sb: string; n, y,i: integer;

{Связываем файлы с файловыми переменными}

Assign(f1,’file1’); Assign(f2,’file2’);

{Читаем строку с клавиатуры и отправляем её в файл №1}

Rewrite(f1); Readln(s); Writeln(f1,s); Close(f1);

{Читаем строку из файла №1}

Reset(f1); Read(f1,s1); Close(f1);

{Находим середину строки}

N:=length (s1); Y:=n div 2;

{В новую переменную записываем первую половину строки в прямом, вторую половину в обратном порядке}

For i:=1 to y do

Snew:=Snew+s1[i];

For i:=n downto y+1 do

Snew:=sew+s1[i];

{Записываем новую строку в файл №2}

Rewrite(f2); Writeln(sNew); Write(f2,sNew); Close(f2);

Текстовые файлы

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу TEXT. Текстовые файлы предназначены для хранения текстовой информации. Именно в такого типа файлах хранятся, например, исходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними.

Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:

EOLN- последовательность кодов ASCII #13 (CR) и #10 (LF);

EOF - код #26 стандарта ASCII.

Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Они отличаются возможностью обращения к ним с переменным числом фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT к OUTPUT.

Процедура READ.

Обеспечивает ввод символов, строк и чисел. Формат обращения:

READ (<ф.п.>,<сп.ввода>) или READ (<сп.ввода>)

Здесь <сп.ввода> - список ввода: последовательность из одной или более переменных типа CHAR, STRING, а также любого целого или вещественного типа.

При вводе переменных типа CHAR выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения указатель файла достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13), а если достигнут конец файла, то - символ EOF (код #26). При вводе с клавиатуры символ CR вводится при нажатии на клавишу Enter, а символ EOF - при одновременном нажатии клавиш CTRL и Z.

При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились символы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются,а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода последовательности строк нужно использовать процедуру READLN (см. ниже).

При вводе числовых переменных процедура READ вначале выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк EOLN пропускаются; после выделения первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представление числовой константы соответствующего типа и преобразуется во внутреннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода-вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

При использовании процедуры READ применительно к стандартному файлу INPUT, т.е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу Enter. Это позволяет редактировать данные при их вводе. Для редактирования используются следующие клавиши:

  • Backspace, Ctrl-H, перевод курсора влево - стирают символ слева от курсора;
  • перевод курсора вправо - восстанавливает символ за символом предыдущую строку ввода;
  • Ctrl-Z Enter - завершает ввод по процедуре READ; оставшиеся «лишние» символьные параметры принимают значение CHR(26), строки возвращаются пустыми, а численные переменные остаются без изменения.

Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре READ сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура READ прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура «перескакивает» маркеры конца строк, т.е. фактически весь файл рассматривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией EOF процедура READ позволяет организовать простой ввбд массивов данных, например, так:

const

N = 1000; {Максимальная длина ввода}

f: text;

m: array of real;

I: Integer;

Begin

assign(f, "prog.dat") ;

reset(£); i:= 1;

while not EOF(f) and (i <= N) do

Begin

read(f ,m[i]) ;

inc(i)

end;

close(f);

.......

end.

Процедура READLN.

Обеспечивает ввод символов, строк и чисел. Эта процедура идентична процедуре READ за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки. Кроме того, эту процедуру можно вызвать без параметра (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.

Если процедура используется для чтения с клавиатуры, нажатие на клавишу Enter отобразится на экране как последовательность CR + LF и курсор будет помещен в начало следующей строки, в то время как в процедуре READ эхо-повтором клавиши Enter является символ CR и курсор помещается в начало текущей строки.

Процедура WRITE.

Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

WRITE (<ф.п.>, <сп.вывода>) или WRITE (<сп.вывода>)

Здесь <сп.вывода> - список вывода: последовательность из одного или более выражений типа CHAR, STRING, BOOLEAN, a также любого целого или вещественного типа.

Файловая переменная <ф.п.>, если она указана, должна быть предварительно описана как переменная типа TEXT и связана с именем файла или логическим устройством процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл OUTPUT, который обычно связан с экраном ПК.

Любой элемент списка вывода может иметь форму

OutExpr [ : MinWidth [ : DecPlaces ] ]

Здесь OUTEXPR - выводимое выражение;

MINWIDTH, DECPLACES - выражения типа WORD (квадратные скобки означают возможность отсутствия заключенных в них параметров).

Подпараметр MINWIDTH, если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление значения OUTEXPR. Если символьное представление имеет меньшую длину, чем MINWIDTH, оно будет дополнено слева пробелами, если - большую длину, то подпараметр MINWIDTH игнорируется и выводится необходимое число символов.

Подпараметр DECPLACES задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с MINWIDTH и только по отношению к выводимому выражению одного из вещественных типов.

Если ширина поля вывода не указана, соответствующий параметр выводится вслед за предыдущим без какого-либо их разделения.

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

При выводе логических выражений в зависимости от их значения выводятся строки TRUE или FALSE. (Ввод логических констант процедурами READ или READLN не предусмотрен).

Вещественные числа выводятся в экспоненциальном формате, если не указан подпараметр DECPLACES, в противном случае выбирается формат представления числа с фиксированной точкой. Экспоненциальный формат представляет вещественное число в виде

S#.##############E*####,

где:

Пробел;

s пробел для положительного и знак «-» для отрицательного чисел;

# десятичная цифра;

Е символ десятичного основания;

* знак «+» или «-» в зависимости от знака десятичного порядка числа.

Если подпараметр MINWIDTH опущен, принимается его значение по умолчанию (23). Если MINWIDTH меньше 10, считается, что он равен 10.

Если подпараметр DECPLACES равен нулю, ни дробная часть числа, ни десятичная точка не выводятся. При отрицательном значении DECPLACES этот параметр игнорируется и число выводится в экспоненциальном формате с учетом MINWIDTH. Если значение DECPLACES больше 18, принимается значение 18. Следует учесть, что при указании подпараметра DECPLACES вещественное число всегда будет выводиться в формате с фиксированной точкой и требуемым количеством знаков в дробной части, даже если значение подпараметра MINWIDTH окажется недостаточным для размещения целой части: в этом случае значение MINWIDTH автоматически увеличивается.

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

Процедура WRITELN. Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр <сп.вывода>: в этом случае в файл передается маркер EOLN, что при выводе на экран приведет к переводу курсор» в начало следующей строки.

Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

EOLN<ф.п.>

Если параметр <ф.п.>

Существует некоторое отличие в работе функций EOLN и EOF с дисковыми файлами и логическими устройствами. Дело в том, что для логического устройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция EOLN возвращает TRUE, если последним считанным с устройства символом был EOLN или EOF, в то время как при чтении с диска TRUE возвращается в случае, если следующим считываемым символом будет EOLN или EOF. Аналогичное различие наблюдается и в функции EOF: для логического устройства TRUE возвращается в случае, если последним символом был EOF, а при чтении с диска - если следующим считываемым символом будет EOF. Иными словами, функции тестируют соответствующие признаки для логического устройства после очередного чтения, а для файла - перед чтением.

Логическая функция SEEKEOLN.

Пропускает все пробелы и знаки табуляции до маркера конца строки EOLN или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

SEEKEOLN (<ф.п.>)

Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.

Логическая функция SEEKEOF.

Пропускает все пробелы, знаки табуляции и маркеры конца строки EOLN до маркера конца файла или до первого значащего символа и возвращает TRUE, если маркер обнаружен. Формат обращения:

SEEKEOF (<ф.п.>)

Если параметр <ф.п.> опущен, функция проверяет стандартный файл INPUT.

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

f: text;

s: String;

Const

Sum: LongInt = 0; {Здесь будет количество символов}

Begin

Write("Имя файла: ");{Запрашиваем...}

Readln(s); {и вводим имя файла.}

assign(f,s);

Reset (f); {Открываем файл}

while not EOF(f) do {Подсчитываем...}

begin {количество. . .}

ReadLn(f,s); {символов...}

inc(Sum, Length(s)) {в файле}

end ;

Close(f); {Закрываем файл}

WriteLn("Объем = ", Sum/40000: 6:2," уч.изд.л.")

end.



Статьи по теме: