rfile.PAS

{* Работа с файлами. Пример №2 *}

Unit RFILE;
Interface
Implementation
Begin
 writeln('В данной программе реализуются следующие функции работы с текстовыми файлами в Паскаль: чтение из файла, просмотр данных файла, запись в файл, добавление и удаление записи, поиск записи, сортировка данных файла по возрастанию и убыванию.');
End.

Program pas;

Uses rfile.pas; {* Эту строку можно удалить *}
Uses CRT; {* Вызов внешних функций *}
Const {* Константы *}
  N = 1000;
  S = 25;
  FileName = 'data.txt';
Type {* Типы переменных *}
  Data = String[S];
Var {* Необходимые переменные *}
  M                             : Array [1..N] Of Data;
  iM                            : Word;
  Max                           : Word;
  Po                            : Word;
  Change                        : Boolean;
  F                             : Text;
Function Empty                : Boolean;
Begin
If Max = 0 Then
  Empty := True
Else Empty;
Function Menu                 : Byte;
Var {* В работе нам потребуются переменные: *}
  T                        : Byte;
  WriteLn('Строк в файле ' : ', Max);
  Filename                 : '
, Max);
  '                        : ', Max);
  Write('Текущий элемент   : ');
  Write('Ваши действия     : ');
  Menu := T;
Var {* Необходимые переменные *}
  I           : Word;
  Begin
For I := 1 To N Do{* Переменная I увеличивается с 1 до N *}
  Max := 0;
Var {* Необходимые переменные *}
  I           : Integer;
  Begin
For I := 1 To Max Do{* Увеличиваем I от 1 до Max с шагом 1 *}
  Var {* Необходимые переменные *}
    I      : Word;
For I := 1 To Max Do{* Увеличиваем I от 1 до Max с шагом 1 *}
  Change := False;
Var {* Необходимые переменные *}
  I      : Word;
  I := 0;
  Max := I;
  Change := False;
  Po := 1;
Var {* В работе нам потребуются переменные: *}
  Temp            : String[S];
  Begin
  Temp := '';
  M[Max] := Temp;
  Change := True;
  Po := Max;
Function Search : Word;
Var {* Необходимые переменные *}
  I                                            : Word;
  J                                            : Word;
  P                                            : Word;
  K                                            : Char;
  St                                           : String;
  Fl                                           : Boolean;
  K := ' ';
  St := '';
Repeat            K := ReadKey; {* Ждем нажатия пользователя *}
  If K > = ' ' Then
    St := St + K;
If (K = #8) And (Length(St) > = 1) Then
  St := Copy(St, 1, Length(St) - 1);
I := 1;
P := 1;
While I  M[J] Then
  Begin
Temp := M[I];
M[I] := M[J];
M[J] := Temp;
Change := True;
Po := Max;
Var {* В работе нам потребуются переменные: *}
  YN : Char;
  Begin
If Change Then
  Begin
Write('Список был изменён, сохранить (Y / N)? ');
ReadLn(YN);
End;
If Upcase(YN) = 'Y' Then
  Save;
End;
Begin
Max := 0;
Po := 0;
Change := False;
iM := 0;
While iM9 Do
  Begin
ClrScr; {* Очищаем экран *}
iM := Menu;
Case iM Of                  1 : Wiew;
  2 : Save;
3 : Load;
4 : Add;
5 : Po := Search;
6 : Delete(Po);
7 : SortUp;
8 : SortDown;
9 : Close;
End;

End;

End......