Подсчет числа строк в текстовом файле 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подсчет числа строк в текстовом файле



В процессе обработки файла часто возникает потребность обнаружить его конец. Например, такая ситуация возникает, если файл нужно прочитать от начала до конца при поиске нужной записи. Для подобного контроля в системе Delphi имеется функция, возвращающая значение true, если после выполнения последней операции ввода/вывода текущая позиция оказывается в самом конце файла, и дальнейшее считывание данных невозможно. Как правило, данная функция применяется при вводе, потому что запись в файл, открытый с помощью процедуры Rewrite, выполняется последовательно, и текущая позиция всегда располагается в конце файла.

Данная функция носит название Eof и имеет один единственный параметр – файловую переменную.

При использовании функции Eof надо помнить, что если она вернула значение true, то попытка выполнить считывание из файла приведет к попытке.

В следующем фрагменте кода выполняется подсчет числа строк в текстовом файле.

AssignFile (F, ‘C:\delo.txt’);

Reset (F);

I:=0;

While not Eof (F) do

Begin

Readln (F, S);

Inc (i);

End;

CloseFile (F);

В представленном фрагменте прописано создание файла, открытие файла для чтения, в цикле от 0 до конца файла его чтение в переменную S, и выдача значения i, т. е. значения количества строк в текстовом файле.

Использование универсального типа данных

в качестве текстового [11]

В системе Delphi существует тип данных, который можно назвать универсальным: tfilestream. Указанный тип может поддержать как целые и вещественные значения данных, так и текстовые форматы.

Упрощенная процедура сохранения текста в файл

В более поздних версиях системы Delphi процедура записи информации в текстовый файл значительно упрощена и сводится к использованию компоненты TMemo, изначально предназначенной для работы с текстовой информацией. Процедура записи фиксируется одной строчкой кода: memo1.Lines.SaveToFile('laba2.txt') – строки из компоненты memo1сохранить в файл с указанным в скобках именем.

Задание на работу

а) Необходимо разработать проект, в котором:

- складываются два произвольных числовых значения;

- полученная сумма записывается в виде текста в текстовый файл;

- информация из текстового файла выводится в окно пользователя.

б) Необходимо разработать проект, в котором:

- текст, вводимый через компонент формы, записывается в файл, а при открытии файла, текст возвращается в исходный компонент.

в) Необходимо разработать проект, в котором:

- текстовая информация записывается в файл прогрессивным методом.

2.2.3 Выполнение задания на работу

Для реализации проекта а) задания на работу необходимо создать форму, показанную на рисунке 40.

Рисунок 40 – Форма «Запись и считывание текста»

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

Рисунок 41 – Примерный код программы проекта

В предложенном коде:

var f:textfile – описание файла текстового типа;

a,b,c,d:string – описание переменных строкового (безразмерного) типа;

i,j:real – описание переменных вещественного типа;

a:='Сумма переменных = ' – присвоение переменной а строки;

b:='Произведение переменных = '– присвоение переменной b строки;

i:=strtofloat(edit1.Text)+strtofloat(edit2.Text) – присвоение переменной i значения, равного сумме чисел, хранящихся в компонентах edit1 и edit2. Причем тот текст, который вводится в компоненты edit1 и edit2 переведен в число (компонента edit предназначена для работы с текстом). Запись strtofloat – расшифровывается как строковый тип (str) в (to) число (float);

j:=strtofloat(edit1.Text)*strtofloat(edit2.Text) – присвоение переменной j значения, равного произведению чисел, хранящихся в компонентах edit1 и edit2;

c:=a+floattostr(i)+#13+b+floattostr(j) – присвоение переменной c совокупности значений, хранящихся в переменных a, b, i, j. Такой подход упрощает процедуру записи в файл. В файл будет записана переменная d; Символ #13 означает переход на новую строку.

assignfile(f,'laba2.txt') – создание файла и именем laba и расширением txt;

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

write(f,c) – запись в файл значения переменной с;

closefile(F) – закрытие файла;

d:='laba2.txt'– присвоение переменной d значения имени файла. При отсутствии указанного пути файл сохранится в текущем каталоге.

memo1.Lines.LoadFromFile(d) – вывод в компонент TMemo содержимого из файла. В скобках указан параметр – переменная d – путь к файлу.

После написания кода необходимо сохранить проект и убедиться в существовании текстового файла. Содержимое текстового файла рекомендуется просмотреть при помощи двух программ: Блокнот и Word.

На рисунках 42а, 42б показано различие в расположение строк файла при его просмотре с помощью двух указанных программ.

Рисунок 42а – Открытие созданного файла с помощью программы Блокнот

Рисунок 42б – Открытие созданного файла с помощью программы Word

Для реализации проекта б) задания на работу необходимо создать форму, например, такую, как показано на рисунке 43. Название формы – «Работа с текстом».

Рисунок 43 – Форма «Работа с текстом»

На рисунке 44 представлена форма, содержащая такие компоненты палитры инструментов Стандартные (Standard) как TMemo1, Edit1, Button1 (кнопка Сохранить), Button2 (кнопка Открыть).

Относительно компонента Edit1 в Инспекторе объектов установите свойство (Properties) Text. В этом свойстве прописывается имя (c расширением) и путь будущего файла (рисунок 44). На рисунке 44 прописано только имя файла, следовательно, файл будет сохранен в текущем каталоге. Расширение файла.*prg. Выбранное расширение позволит не менять кодировки Windows при открытии файла.

Рисунок 44 – Ввод имени (с расширением) файла

Также на форму «Работа с текстом» вынесен компонент палитры инструментов Dialogs – TOpenDialog. При запуске программы компонент ТOpenDialog виден не будет. Компонент ТOpenDialog необходим для того, чтобы при открытии созданного текстового файла открывалось стандартное окно с существующими каталогами (по аналогии, например, папки Мои документы операционной системы Windows).

Относительно компонента ТOpenDialog в Инспекторе объектов (Object Inspector) установлен фильтр (рисунок 45).

Рисунок 45 – Установление фильтра относительно компонента ТOpenDialog

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

В процедуре Button1Click (кнопка Сохранить) следует прописать код, представленный на рисунке 46.

Рисунок 46 – Код программы, прописанный в процедуре Button1Click

Код программы, представленный на рисунке 45, означает:

var f:tfilestream – описание файловой переменной универсального типа.

f:=tfilestream.create(edit1.Text,fmcreate) – создание файла вышеуказанного типа, имя которого будет прописано в компоненте Edit1. В компоненте Edit1 можно также указать путь файла. Если путь не указан, то файл создается в текущем каталоге.

f.Free – закрытие созданного файла. При таком построении кода оперативная память ПК полностью высвобождается от функций по «держанию в открытом состоянии созданного файла».

memo1.Lines.SaveToFile(edit1.Text) – сохранение текста, вносимого в компонент TMemo, в созданный файл.

В процедуре Button2Click (кнопка Открыть) следует прописать код, представленный на рисунке 47.

Рисунок 47 – Код программы, прописанный в процедуре Button2Click

Код программы, представленный на рисунке 46, означает:

var a:string – описание переменной строкового типа (безразмерная строка);

opendialog1.Execute () – открытие стандартного окна с папками с целью последующего открытия нужного файла.

a:=opendialog1.FileName – присваивание переменной а значения пути к файлу, который следует открыть.

memo1.Lines.LoadFromFile(a) – загрузка данных из файла в объект TMemo1.

После написания кода откомпилируйте и сохраните проект.

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

Рисунок 48 – Стандартное окно для выбора файла с целью его открытия[12]

Для реализации проекта в) необходимо создать форму, представленную на рисунке 49. Название формы – «Запись в текстовый файл».

Рисунок 49 – Форма «Запись в текстовый файл»

В процедуре Button1Click (кнопка Запись) следует прописать код, представленный на рисунке 50.

Рисунок 50 – Код программы в соответствии с пунктом задания в)

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

2.2.4 Контрольные вопросы

1 Для чего предназначены текстовые файлы? Какую информацию они содержат?

2 Какое расширение имеют текстовые файлы?

3 Какие процедуры в системе Delphi осуществляют ввод/вывод данных при работе с текстовым файлом?

4 Как в системе Delphi создать текстовый файл?

5 Как в системе Delphi открыть текстовый файл?

6 Какая процедура в системе Delphi не стирает информацию из файла при открытии его для записи?

7 Какая процедура используется для печати текстового файла?

8 Какая процедура используется для удаления текстового файла? Можно ли эту процедуру использовать для удаления файлов пользовательского типа и нетипизированных файлов?

9 Какая процедура позволяет подсчитывать количество строк в текстовом файле?

10 Как организовать цикл при подсчете количества строк в текстовом файле?

11 Что представляет собой универсальный тип данных? Может ли он содержать текст? Целые и вещественные значения данных?

12 Какой компонент обеспечивает открытие стандартного окна для выбора файла? На какой палитре компонентов он располагается?

13 Для чего устанавливается фильтр в отношении компонента, позволяющего открывать окно, содержащее каталоги?

14 Может ли файл, содержащий текст, иметь расширение, отличное от расширения txt?

15 Каким образом программа распознает путь к файлу, который требуется открыть?

16 Всегда ли требуется прописывать в коде полный путь файла? Что происходит с файлом, если его полный путь не прописан?

17 Для чего и в каких случаях значения переменных следует переводить из строкового типа в числовой?

18 Что означает символ #13?

19 С помощью каких программ можно просматривать текстовые файлы?

20 В чем заключается прогрессивные методы записи в файл текстовой информации?

 

 


 



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 231; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.17.80 (0.018 с.)