===== Файлы ===== 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 ==== Процедуры и функции ==== ^ Имя ^ Описание ^ |-|-|