Содержание

Файлы

FIXME

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

  1. явное указание имени файла, как переменной;
  2. замена стандартного ввода / вывода.

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

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

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

в файл
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

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

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