Задание 2 Ввод из файла. Открытие файла для чтения.
Открытие файла для в режиме для чтения выполняется вызовом процедуры Reset(f).
В общем виде инструкции чтения из файла выглядят так:
Read(ФайловаяПеременная, СписокВывода) или
Readln(ФайловаяПеременная, СписокВывода)
Создайте новый проект, добавьте на форму Button1,Button2,Button3 и Memo1
Рис. 4 Окно приложения «Чтение файла»
В папке проекта вручную создайте файл data.txt пусть он содержит следующие строки:
12 5 98 Февраль
15 5 98 12
91 Чапаев 25
В обработчике кнопки Button1 напишите:
var f:TextFile; a,b,c:integer;
begin
AssignFile(f,'data.txt');
Reset(f); // Открываем файл для чтения
read(f,a); // считываем в a
readln(f,b);
read(f,c);
memo1.Lines.Add('a='+IntToStr(a)+' b='+IntToStr(b)+' c='+IntToStr(c)); //выведем
//значения a,b,c в
//Memo1
closefile(f);
end;
Запустите программу. Поймите, почему переменные a b и c принимают такие значения. Вернитесь в режим программирования.
Скопируйте код обработчика кнопки Button1 в обработчик кнопки Button2, измените в нём (обработчике кнопки Button2) все процедуры read и readln на соответственно: read(f,a,b) и readln(f,c).
Запустите программу. Поймите, почему переменные a b и c принимают такие значения. Вернитесь в режим программирования.
В обработчике кнопки Button3 напишите:
var f:TextFile; a,b,c,d:integer; s:string;
begin
AssignFile(f,'data.txt');
Reset(f);
readln(f,a,b,c,s); // правильно в переменную строкового типа можно записать строку
readln(f,a,b,c,d); // !!! ошибка в переменную целого типа d нельзя записать строку
memo1.Lines.Add('a='+IntToStr(a)+' b='+IntToStr(b)+' c='+IntToStr(c));
memo1.Lines.Add(s); // Вывод в Memo1
closefile(f);
end;
Запустите программу. Поймите, почему переменные a b и c принимают такие значения. Вернитесь в режим программирования.
Здесь в строковую переменную s типа string будет записана строка Февраль. Здесь логика работы программы указана в комментариях.
Кстати добавьте на форму кнопку BitBtn1 она самая первая на палитре Additional, это функциональная кнопка, измените значение её свойства Kind на bkClose и теперь при нажатии на неё приложение будет закрываться.
Задание 3. Определение конца файла.
Очень важно знать, когда же кончается файл, где его конец?
Есть булевская функция EOF (End Of File) возвращающая True, если достигнут конец файла, в противном случае False.
Создайте новый проект. Добавьте Button1, Memo1. В папке вашего проекта самостоятельно создайте файл rashod.txt, пусть он содержит следующие 3 строки:
2500 Часы
900 Фонарик
100 Ручка
Требуется подсчитать общую сумму расходов 2500+900+100 в файле и вывести значение в Memo1. Окно приложения должно выглядеть так (рис. 5).
Рис. 5 Окно приложения «Общая сумма расходов»
В обработчике кнопки Button1 напишите:
var f:TextFile; i,sum,Obsh_sum:integer;
begin
Obsh_sum:=0; // Общая сумма
AssignFile(f,'rashod.txt');
Reset(f);
while NOT Eof(f) do // пока нет конца файла делать …
begin
readln(f,sum); // Считываем значение конкретной суммы в переменную sum
Obsh_sum:=Obsh_sum+sum; // наращиваем значение общей суммы
end;
memo1.Lines.Add(‘Общая сумма расходов ’);
memo1.Lines.Add(IntToStr(Obsh_sum)); // выводим в Memo1 Общую сумму
closefile(f);
end;
Запустите программу. Убедитесь, что она работает правильно. Вернитесь в режим программирования.
Самостоятельное задание. Считайте данных из файла и добавьте их на график.
Кнопка Button1 должна создавать файл funk.txt, записывать в него значения функции y=x3 (интервал x от – 10 до +10 с шагом 1) и закрывать файл(рис.).
Кнопка Button2 должна открывать файл для чтения, считывать из этого файла данные и отображать их на графике компонента Chart1.
Рис. 6 Окно приложения «Считывание данных из файла и добавление на график»
в режиме разработки в Delphi7
автор и разработчик лабораторных
работ по Delphi
доцент кафедры Информационных технологий и систем
кандидат физ.-мат. наук
Санников Е.В.