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




НазваниеФайл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности
страница3/5
Дата конвертации15.02.2016
Размер0.68 Mb.
ТипДокументы
источникhttp://maispace.ru/docs/mailit/Файлы в Delphi.doc
1   2   3   4   5

2.2.Чтение данных из файла


Чтение из файла выполняется при помощи инструкций read и readln, которые в общем виде записываются следующим образом:


read (ФайловаяПеременная, СписокПеременных);

readln (ФайловаяПеременная, СписокПеременных);

где:

ФайловаяПеременнаяпеременная типа TextFile;

СписокПеременныхимена переменных, разделенные запятыми.


Чтение чисел


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

Например, если текстовый файл а:\data. txt содержит следующие строки:

23 15

45 28

56 71

то в результате выполнения инструкций:

AssignFile(f, 'a:\data.txt');

Reset(f); // открыть для чтения

read(f, а);

read(f, b, с);

read(f, d);

значения переменных будут следующими: а = 23, b = 15, с = 45, d = 28.

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

Поэтому в результате выполнения инструкций


AssignFile(f, 'а:\data.txt’);

Reset(f);

readln(f, a);

readln(f, b, c);

readln(f, d);


значения переменных будут следующими: а = 23, b = 45, с = 28, d = 56.

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


Чтение строк


В программе строковая переменная может быть объявлена с указанием длины или без нее.

Например:


strokal:string[10];

stroka2:string;


При чтении из файла значения строковой переменной, длина которой явно задана в ее объявлении, считывается столько символов, сколько указано в объявлении, но не больше, чем в текущей строке.

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

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

Пусть, например, текстовый файл freinds.txt содержит строки:


Косичкина Маша

Васильев Антон

Цой Лариса


В табл. 1 приведено несколько вариантов объявления переменных, инструкции чтения из файла freinds.txt и значения переменных после выполнения инструкций чтения.


Таблица 1. Примеры чтения данных из файла

Объявления

переменных

Инструкция чтения из файла

Значение переменных после чтения из файла

fam: string[15]

Readln(f, fam, name)

fam='Косичкина '

паше: string[10]




name='Маша '

fam, name: string;

Readln(f, fam, name)

fam='Косичкина Маша'







name=''

drug: string[80]

Readln(f, drug)

drug ='Косичкина Маша’


2.3.Определение конца файла


Пусть на диске есть некоторый текстовый файл. Нужно в диалоговое окно вывести содержимое этого файла. Решение задачи довольно очевидно: надо открыть файл, прочитать первую строку, затем вторую, третью и т. д. до тех пор, пока не будет достигнут конец файла. Но как определить, что прочитана последняя строка, достигнут конец файла?

Для определения конца файла можно воспользоваться функцией EOF (End of File — конец файла). У функции EOF один параметр — файловая переменная. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение. Если прочитанный элемент данных является последним, то значение EOF равно True.

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




Рис. 6. Окно программы Чтение из файла


Пример 5. Чтение из файла


unit rd_;

interface

. . . .

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // имя файла

buf: String [80]; // буфер для чтения из файла

begin

fName := Edit1.Text;

AssignFile(f, fName);

{$I-}

Reset (f); // открыть для чтения

{$I+}

if IOResult <> 0 then

begin

MessageDig('Ошибка доступа к файлу ' + fName,

mtError,[mbOk],0);

exit;

end;

// чтение из файла

while not EOF(f) do

begin

readln(f, buf); // прочитать строку из файла

Memo1. Lines. Add (buf); // добавить строку в поле Memo1

end;

CloseFile(f); // закрыть файл

end;


// запись в файл

procedure TForm1.Button2Click(Sender: TObject);

var

f: TextFile; // файл

fName: String[80]; // имя файла

i: integer;

begin

fName := Edit1.Text;

AssignFile(f, fName);

Rewrite(f); // открыть для перезаписи

// запись в файл

for i: =0 to Memo1.Lines.Count do //строки нумеруются с нуля

writeln(f, Memo1.Lines[i]);

CloseFile(f); // закрыть файл

MessageDlg('Данные записаны в файл',mtInformation,[mbОк],0);

end;

end.

Для организации обработки файла использован оператор цикла while, который обеспечивает проверку значения функции EOF перед каждым чтением, в том числе и перед первым. Наличие кнопки Сохранить и соответствующей ей процедуры позволяет сохранить содержимое поля Memo в файле, т. е. программа чтение из файла представляет собой примитивный редактор текста.

Добавление очередной прочитанной из файла строки в поле Memo выполняется применением метода Add к свойству Lines.


Фрагмент программы с обработчиками событий

по чтению и записи данных файла.


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

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

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




Рис. 7. Вид стартовой формы

1   2   3   4   5

Похожие:

Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconТема: Массивы. Виды массивов. Ввод, вывод массивов
В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconРеферат Разработана кластерная восемнадцатигрупповая система химических элементов до
Периодической системе элементов, но и дополнительно по кластерам химических элементов, определять прогнозные свойства новых элементов...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности icon1. Понятие системы управления базами данных
Основная особенность субд – это наличие процедур для ввода и хранения не только самих данных, но и описаний их структуры. Файлы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconВопросы к экзамену по «Общей и неорганической химии»
Периодический закон и периодическая система химических элементов Д. И. Менделеева, закономерности изменения свойств элементов и их...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconУрок в 9 классе по теме
Изучить естественное семейство сходных химических элементов главной подгруппы II группы периодической системы химических элементов,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconОснова Информационных систем, объект ее обработки база данных компьютеров
В широком смысле слова можно сказать, что бд – это совокупность сведений о конкретных объектах реального мира в какой-либо предметной...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconРеферат по химии на тему: «Неметаллы»
Положение неметаллических элементов в периодической системе химических элементов. Нахождение в природе. Общие химический и физические...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconПрограмма это последовательность команд, которую выполняет компьютер в процессе обработки данных
Ни компьютер в целом, ни его составные части не способны сами по себе обрабатывать информацию. Управляют работой компьютера программы,...
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconПрограмма работы с базой данных Blackfish sql "Книги" (books). Подкаталог delploy\database содержит базу данных, подкаталоги deploy\client и deploy\server соответственно клиентскую и серверную части приложения
Программы работы с базами данных требуют, чтобы файлы баз данных находились в каталоге D:\Database
Файл, это именованная структура данных, представляющая собой последовательность элементов данных одного типа, причем количество элементов последовательности iconСистема хранения данных о студенческих научных достижениях
База данных о студенческих научных достижениях предназначена для хранения и обработки данных о научно-исследовательских работах студентов...
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©kzdocs.docdat.com 2012
обратиться к администрации
Документы
Главная страница