Файлы

Ввод и вывод информации через дисковое пространство (файлы) может осуществляться двумя путями:

явное указание имени файла, как переменной;

замена стандартного ввода / вывода.

Файл можно использовать либо ТОЛЬКО для чтения, либо ТОЛЬКО для записи информации.

Записывать и считывать информацию из файла одновременно нельзя

Явное указание имени файла, как переменной

var fout: textfile; a, b, c: integer; s : string; f, h, p : real; begin assign(fout,'example.txt'); {сопоставляем имени fout файл на диске example.txt} rewrite(fout); {открываем файл на запись, стирая ВСЕ его содержимое} a:=12345; b:=-12345; c:=0; s:='Пример текста'; f:=1.2345; h:=-1.2345; p:=0.0; writeln(fout, s); {записываем текст в файл fout} writeln(fout, a:8, b:8, c:8); {записываем три целых числа в файл fout} writeln(fout, f:8:5, h:8:4, p:8:1); {записываем три дробные числа в файл fout} close(fout) {обязательно закрываем файл после завершения работы с ним} end.

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

Пример текста
12345 -12345 0
1.23450 -1.2345 0.0

var fin : textfile; a, b, c : integer; s : string; f, h, p : real; begin assign(fin,'example.txt'); {сопоставляем имени fin файл на диске example.txt} reset(fin); {открываем файл на считывание с начала файла} readln(fin,s); {считываем текст из файла fin, сохраняя его в переменной s} readln(fin,a,b,c); {считываем три числа из файла fin, сохраняя их значения в переменных a, b, c} readln(fin,f,h,p); {считываем три числа из файла fin, сохраняя их значения в переменных f, h, p} close(fin) {закрываем файл} end.

Замена стандартного ввода / вывода

var a, b, c : integer; s : string; f, h, p : real; begin assign(input,'example.txt'); {сопоставляем стандартному вводу input файл на диске example.txt} reset(input); {открываем файл на считывание с начала файла} readln(s); {считываем текст из файла example.txt, сохраняя его в переменной s} readln(a,b,c); {считываем три числа из файла example.txt, сохраняя их значения в переменных a, b, c} readln(f,h,p); {считываем три числа из файла example.txt, сохраняя их значения в переменных f, h, p} close(input) {закрываем считывание из файла} end.
var a, b, c: integer; begin assign(output, 'output.txt'); {сопоставляем стандартному выводу output файл на диске output.txt} rewrite(output); {открываем файл на запись, стирая ВСЕ его содержимое} a:=12345; b:=-12345; c:=0; s:='Пример текста'; f:=1.2345; h:=-1.2345; p:=0.0; writeln(s); {записываем текст в файл output} writeln(a:8, b:8, c:8); {записываем три целых числа в файл output.txt} writeln(f:8:5, h:8:4, p:8:1); {записываем три дробные числа в файл output.txt} close(output) {обязательно закрываем файл после завершения работы с ним} end.

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

Пример текста
12345 -12345 0
1.23450 -1.2345 0.0

Важно помнить, что заменив стандартный ввод/выдод Вы не сможете читать данные с клавиатуры или писать на экран.

Разбор строки

Пусть дан входной файл вида

2
fam name 5
fam2 name2 4

Прочитаем из него данные, поместив значения из строки в разные переменные

var s:string; c:char; i:integer; n : integer; fname, name:string; mark:integer; position : integer; begin assign(input,'data.txt'); reset(input); readln(n); for i := 1 to n do begin readln(s); //fname position := pos(' ', s); fname := copy(s, 1, position); delete(s,1,position); //name position := pos(' ', s); name := copy(s, 1, position); delete(s,1,position); //mark val(s, mark); writeln('fname: ',fname, ' name: ', name, ' mark: ', mark); end; close(input); end.

В результате получим:

fname: fam name: name mark: 5
fname: fam2 name: name2 mark: 4

Процедуры и функции

Имя	Описание
-	-