Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.08 KB | None | 0 0
  1. Unit  UnLab2;
  2. Interface
  3.  
  4. Uses
  5.   SysUtils;
  6. Type
  7.   TTrans = (Avt, Trol, Tram);
  8.   TZapis = record
  9.     Trans:TTrans
  10.     Nom:string[10];
  11.     Ost:integer;
  12.   end;
  13.  
  14. //----------первая часть: создание типизированного файла в диалоге
  15. Procedure CreateTypedFile1();
  16. //----------вторая часть: создание типизированного файла из текстового
  17. Procedure CreateTypedFile2();
  18. //-------------- третья часть: поиск в типизированном файле ----
  19. Procedure FindTRANS();
  20. //-------------- просмотр типизированного файла ----
  21. Procedure ViewFile();
  22. Implementation // -----------реализационная часть-----------------
  23. //----------первая часть: создание типизированного файла в диалоге
  24. Procedure CreateTypedFile1();
  25. var
  26.   Zapis: TZapis;
  27.   fr: file of TZapis; // типизированный файл - файл записей
  28.   n, kol: integer;
  29.   ch: char;
  30.   FileName:string[80];
  31. begin
  32.   if ParamCount<1 then
  33.   begin
  34.     writeln('Мало параметров '#13#10'Press enter');
  35.     readln;  exit
  36.   end;
  37.   FileName := ParamStr(1);
  38.   AssignFile(fr, FileName);
  39.   Try  ReWrite(fr);    //  или  {$I-} ReWrite(fr); {$I+} и if IOResult<>0 then <ошибка>
  40.   Except
  41.     writeln('Error: не удалось создать типизированный файл ',FileName);
  42.     write('Нажмите ENTER'); readln;  exit
  43.   end;
  44.  
  45.   kol:=0;
  46.   repeat
  47.     write('Транcпорт=?'); readln(n); Zapis.Trans:=TTrans(n);
  48.     write('Номер=?'); readln(Zapis.Nom);
  49.     write('Остановки=?'); readln(Zapis.Ost);
  50.     write(fr, Zapis);
  51.     inc(kol);
  52.  
  53.     write('Ещё? (y/n)');
  54.     readln(ch)
  55.     until UpCase(ch)='N';
  56.   CloseFile(fr);
  57.   writeln('Создан типизированный файл из ',kol,' записей');
  58.   write('Нажмите ENTER');
  59.   readln;
  60. end;
  61. //--------------------------------------------------------------
  62. //----------вторая часть: создание типизированного файла из текстового
  63. Procedure CreateTypedFile2();
  64. var
  65.   Zapis: Tzapis;
  66.   ft: TextFile; // текстовый файл
  67.   fr: file of TZapis; // типизированный файл - файл записей
  68.   n, kol: integer;
  69.   ch: char;
  70.   FileName:string[80];
  71. begin
  72.   if ParamCount<2 then
  73.   begin
  74.     writeln('Мало параметров '#13#10'Press enter');
  75.     readln;  exit
  76.   end;
  77. FileName:= Paramstr(2);
  78.  AssignFile(ft, FileName);
  79.   Try  Reset(ft);
  80.   Except
  81.     writeln('Error: не удалось открыть текстовый файл ',Paramstr(2));
  82.     write('Нажмите ENTER'); readln;  exit
  83.   end;
  84.   kol:=0;
  85.   repeat
  86.     readln(ft, n); Zapis.Trans:=TTrans(n);
  87.     readln(ft, Zapis.Nom);
  88.     readln(ft, Zapis.Ost);
  89.     write(fr, Zapis);
  90.     inc(kol);
  91.     until eof(ft);
  92.     CloseFile(fr);
  93.     CloseFile(ft);
  94.     writeln('Создан типизированный файл из ',kol,' записей');
  95.     write('Нажмите ENTER');
  96.   readln;
  97. end;
  98.  
  99. //--------------------------------------------------------------
  100. //-------------- третья часть: поиск в типизированном файле ----
  101. Procedure FindTRANS();
  102. var
  103.   Zapis: TZapis;
  104.   fr: file of TZapis;
  105.   n, kol: integer;
  106.   FileName:string[80];
  107. begin
  108.   if ParamCount<1 then
  109.   begin
  110.     writeln('Мало параметров '#13#10'Press enter');
  111.     readln;  exit
  112.   end;  
  113.   FileName := ParamStr(1);
  114.   AssignFile(fr, FileName);
  115.   Try  ReSet(fr);    //  или  {$I-} ReSet(fr); {$I+} if IOResult<>0 then
  116.   Except
  117.     writeln('Error: не удалось открыть типизированный файл ',FileName);
  118.     write('Press ENTER'); readln;  exit
  119.   end;
  120.  
  121.   kol:=0;
  122.   while not eof(fr) and (kol=0) do
  123.   begin
  124.     read(fr, Stud); // считывание
  125.  
  126.     if ((Stud.o1=5) or (Stud.o2=5) or (Stud.o3=5)) and
  127.       (Stud.Kurs = Kurs1) and
  128.       (ANSIUpperCase(Stud.FIO.I) = 'ИВАН') then  // сравнение в верхнем регистре
  129.     begin
  130.       writeln('Найден ', Stud.FIO.I,' ',Stud.FIO.O,' ',Stud.FIO.F,
  131.       ' оценки ', Stud.o1, ' ', Stud.o2,' ', Stud.o3 );
  132.       inc(kol);
  133.       // Изменение считанного
  134.       Stud.o1:=3; Stud.o2:=3; Stud.o3:=3;
  135.       n:=FilePos(fr)-1; // текущая позиция найденной записи
  136.       // запись изменений "поверх" предыдущей версии
  137.       seek(fr, n); // изменить тек.позицию в файле
  138.       write(fr, Stud);
  139.       // запись в файле изменена
  140.       writeln('В файле изменена запись номер ', n+1)
  141.     end;
  142.   end;
  143.   if kol=0 then
  144.     writeln('Данные, соответствующие запросу, не найдены');
  145.   CloseFile(fr);
  146.   write('Press ENTER');  readln;
  147. end;
  148. //--------------------------------------------------------------
  149. //-------------- просмотр типизированного файла ----
  150. Procedure ViewFile();
  151. var
  152.   Zapis: TZapis;
  153.   fr: file of Tzapis;
  154.   n, kol: integer;
  155.   FileName:string[80];
  156. begin
  157.   if ParamCount<1 then
  158.   begin
  159.     writeln('Мало параметров '#13#10'Press enter');
  160.     readln;  exit
  161.   end;
  162.   FileName := ParamStr(1);
  163.   AssignFile(fr, FileName);
  164.   Try  ReSet(fr);    //  или  {$I-} ReSet(fr); {$I+} if IOResult<>0 then
  165.   Except
  166.     writeln('Error: не удалось открыть типизированный файл ',FileName);
  167.     write('Press ENTER'); readln;  exit
  168.   end;
  169.   kol:=0;
  170.   while not eof(fr) do
  171.   begin
  172.     read(fr, Zapis); // считывание
  173.       writeln('Найден ', ord(Zapis.Trans),' ', ' номер ', Zapis.Nom, ' остановки ', Zapis.Ost);
  174.       inc(kol);
  175.   end;
  176.   if kol=0 then
  177.     writeln('Данные не найдены')
  178.   else
  179.     writeln('Найдено ',kol, ' записей');
  180.   CloseFile(fr);
  181.   write('Press ENTER');  readln;
  182. end;
  183. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement