мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
pascal:files [20/11/2009 13:38] dnaumovpascal:files [06/02/2018 10:56] (текущий) – [Замена стандартного ввода / вывода] oca
Строка 10: Строка 10:
 <note important>Записывать и считывать информацию из файла одновременно нельзя <note important>Записывать и считывать информацию из файла одновременно нельзя
 </note> </note>
 +
 +===== Явное указание имени файла, как переменной =====
  
 <code pascal|Запись в файл> <code pascal|Запись в файл>
Строка 15: Строка 17:
   fout: textfile;   fout: textfile;
   a, b, c: integer;   a, b, c: integer;
 +  s : string;
 +  f, h, p : real;
  
 begin begin
Строка 26: Строка 30:
   writeln(fout, s);             {записываем текст в файл fout}   writeln(fout, s);             {записываем текст в файл fout}
   writeln(fout, a:8, b:8, c:8); {записываем три целых числа в файл fout}   writeln(fout, a:8, b:8, c:8); {записываем три целых числа в файл fout}
-  writeln(fout, a:8:5, b:8:5c:8:1); {записываем три дробные числа в файл fout}+  writeln(fout, f:8:5, h:8:4p:8:1); {записываем три дробные числа в файл fout}
  
   close(fout) {обязательно закрываем файл после завершения работы с ним}   close(fout) {обязательно закрываем файл после завершения работы с ним}
Строка 59: Строка 63:
 </code> </code>
  
 +
 +===== Замена стандартного ввода / вывода =====
 +
 +<code pascal|Считывание из файла>
 +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.
 +</code>
 +
 +
 +<code pascal|Запись в файл>
 +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.
 +
 +</code>
 +
 +После исполнения программы на диске, в той же папке где и программа появится файл с именем **output.txt** следующего содержания:
 +
 +<code>
 +Пример текста
 +   12345  -12345       0
 + 1.23450 -1.2345     0.0
 +</code>
 +
 +Важно помнить, что **заменив стандартный ввод/выдод Вы не сможете читать данные с клавиатуры или писать на экран**.
 +
 +==== Разбор строки ====
 +Пусть дан входной файл вида
 +<code>
 +2
 +fam name 5
 +fam2 name2 4
 +</code>
 +
 +Прочитаем из него данные, поместив значения из строки в разные переменные
 +
 +<code pascal>
 +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.
 +</code>
 +
 +В результате получим:
 +
 +<code>
 +fname: fam  name: name  mark: 5
 +fname: fam2  name: name2  mark: 4
 +</code>
 +
 +==== Процедуры и функции ====
 +^ Имя ^ Описание ^
 +|<code pascal>-</code>|-|