===== Файлы =====
FIXME
Ввод и вывод информации через дисковое пространство (файлы) может осуществляться двумя путями:
- явное указание имени файла, как переменной;
- замена стандартного ввода / вывода.
Файл можно использовать либо **ТОЛЬКО** для чтения, либо **ТОЛЬКО** для записи информации.
Записывать и считывать информацию из файла одновременно нельзя
===== Явное указание имени файла, как переменной =====
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
==== Процедуры и функции ====
^ Имя ^ Описание ^
|-
|-|