Лабораторная работа № 7. Ввод из файла
Для организации обработки файла в программе использована инструкция while, которая обеспечивает проверку значения функции EOF перед каждым чтением, в том числе и перед первым. Перед первым чтением проверка осуществляется потому, что хотя открываемый файл может существовать на диске, однако он может быть пустым. Задание на работу. Пусть на диске есть текстовый файл, содержащий информацию… Читать ещё >
Лабораторная работа № 7. Ввод из файла (реферат, курсовая, диплом, контрольная)
Цель работы.
Целью настоящей работы является получение практических навыков чтения (ввода) данных из существующего файла для дальнейшей их обработки Общие сведения.
Исходные данные для их дальнейшей обработки можно вводить не только с клавиатуры или программно, но также и из текстового файла.
Для этого нужно объявить файловую переменную типа TextFile, назначить ей с помощью AssignFile имя файла, из которого будут считываться данные, открыть файл для чтения процедурой reset и прочитать (ввести) данные, используя инструкцию read или readln .
var.
f: TextFile;
…
begin.
AssignFile (f, c: data. txt);
Reset (f);
…
label m;
var.
f: TextFile;
fname: string[80]; {для записи краткого или полного имени файла}.
res: integer; {для хранения значения функции IOresult}.
answ: word: {ответ пользователя}.
begin.
fname:= `c: data. txt';
AssignFile (f, fname);
repeat.
{$I-}.
Reset (f); {открытие файла для чтения}.
{$I+}.
res:= IOresult; {При успешном завершении открытия файла IOresult := 0}.
if res 0.
then answ:= MessageDlg (`Ошибка открытия ' + fname + #13 + `Повторить попытку? ', mtWarning, [mbYes, mbNo], 0;);
until (res = 0) OR (answ = mbNo);
if res 0 then goto m;
{здесь инструкции программы, которые выполняются в случае успешного открытия файла}.
m:
…
Общий вид инструкций read и readln: read (,); readln (,); - переменная типа TextFile; - имена переменных разделенных запятыми. Отличие инструкции readln от read состоит в том, что после считывания очередного числа и присвоения его значения последней переменной списка инструкции readln происходит переход к следующей строке файла. Процедура.
procedure Simp;
var.
f: TextFile;
a, b, c: integer;
begin.
assignFile (f, `c: data. txt');
reset (f);
read (f, a);
readln (f, b);
read (f, c);
end;
переменная a получит значение 12, переменная b получит значение 5, а переменная с получит значение равное15.
Следует отметить, что для определения конца файла используется функция EOF (End Of File — конец файла). Функция имеет один параметр — файловую переменную. Значение функции EOF равно FALSE, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейщее чтение из файла. Если прочитанный элемент данных является последним в файле, то значение EOF равно TRUE.
Задание на работу. Пусть на диске есть текстовый файл, содержащий информацию о доходах. Каждая строка файла начинается с цифры, соответствующей величине дохода, за которой следует строка символов — комментарий. Необходимо вычислить суммарный доход и вывести результат.
Приведем процедуру, которая решает поставленную задачу. Процедура запускается при активизации окна приложения, которое содержит только один компонент-поле метки, используемое для вывода результата работы программы.
procedure (Sender: TObject);
var.
fname: string[20];
f: TextFile;
inc: integer;
sum: integer;
begin.
fname:= `c: incom. txt';
AssignFile (f, fname);
{$I-}.
Reset (f);
{$I+}.
if IOresult = 0.
then begin sum:=0;
while NOT EOF (f) do.
begin.
readln (f, inc);
sum:= sum + inc; { StrToInt (inc)-ведь файл текстовый }.
end;
CloseFile (f);
Label1.caption:= `Суммарный доход:' + IntToStr (sum);
end.
else.
Label1.caption:= `Ошибка открытия' + fname;
end;
Для организации обработки файла в программе использована инструкция while, которая обеспечивает проверку значения функции EOF перед каждым чтением, в том числе и перед первым. Перед первым чтением проверка осуществляется потому, что хотя открываемый файл может существовать на диске, однако он может быть пустым.
Задания для самостоятельного выполнения.
- 1. Используя файл созданный в предыдущей работе, создайте проект чтения данных и его обработку в результате которой будет вычислено итоговая сумма заработной платы рабочих по каждому отдельно взятому цеху.
- 2. Используя данные файла созданного в предыдущей работе, определите номер телефона и год его установки заданного абонента, предварительно отсортировав номера
телефонов по принадлежности к той или иной АТС.
- 3. По данным прочитанным из файла составьте программу определения стажа работы сотрудника, год его рождения и занимаемую должность. Соответствующий файл был создан Вами в предыдущей работе. Данные должны выводится компонентой Label1 проекта Delphi.
- 4. Составте программу чтения данных из файла, созданного Вами в предыдущей работе. Результатом работы программы должна быть общая площадь вспаханной земли трактористом за период от Дата1 до Дата2.
- 5. Составить проект Delphi, который, используя данные файла созданного в предыдущей работе, определит дату следующего освидетельствования и срок службы автомобиля с указанным номером.
- 6. Определить на какую сумму и сколько видов товаров имеется на складе. Данные прочитать из файла составленного Вами в предыдущей работе.
- 7. Какую мощность потребляет тигель за время проведения физического эксперимента.
В созданном Вами проекте используйте файл из предыдущей работы.
- 8. Определите суммарное количество огурцов и помидор собранных за указанный промежуток времени между Дата1 и Дата2. В программе используйте данные из файла составленного Вами в предыдущей работе.
- 9. При заданной начальной и конечной допустимой влажности древесины определить его сушки. И составленном приложении на Delphi используйте данные из файла, составленного в предыдущей работе.
- 10. Определить количество молока надоенного от данной коровы за неделю. В программе используйте данные из предыдущей работы.