Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unit UnLab2;
- Interface
- Uses
- SysUtils;
- Type
- TTrans = (Avt, Trol, Tram);
- TZapis = record
- Trans:TTrans
- Nom:string[10];
- Ost:integer;
- end;
- //----------первая часть: создание типизированного файла в диалоге
- Procedure CreateTypedFile1();
- //----------вторая часть: создание типизированного файла из текстового
- Procedure CreateTypedFile2();
- //-------------- третья часть: поиск в типизированном файле ----
- Procedure FindTRANS();
- //-------------- просмотр типизированного файла ----
- Procedure ViewFile();
- Implementation // -----------реализационная часть-----------------
- //----------первая часть: создание типизированного файла в диалоге
- Procedure CreateTypedFile1();
- var
- Zapis: TZapis;
- fr: file of TZapis; // типизированный файл - файл записей
- n, kol: integer;
- ch: char;
- FileName:string[80];
- begin
- if ParamCount<1 then
- begin
- writeln('Мало параметров '#13#10'Press enter');
- readln; exit
- end;
- FileName := ParamStr(1);
- AssignFile(fr, FileName);
- Try ReWrite(fr); // или {$I-} ReWrite(fr); {$I+} и if IOResult<>0 then <ошибка>
- Except
- writeln('Error: не удалось создать типизированный файл ',FileName);
- write('Нажмите ENTER'); readln; exit
- end;
- kol:=0;
- repeat
- write('Транcпорт=?'); readln(n); Zapis.Trans:=TTrans(n);
- write('Номер=?'); readln(Zapis.Nom);
- write('Остановки=?'); readln(Zapis.Ost);
- write(fr, Zapis);
- inc(kol);
- write('Ещё? (y/n)');
- readln(ch)
- until UpCase(ch)='N';
- CloseFile(fr);
- writeln('Создан типизированный файл из ',kol,' записей');
- write('Нажмите ENTER');
- readln;
- end;
- //--------------------------------------------------------------
- //----------вторая часть: создание типизированного файла из текстового
- Procedure CreateTypedFile2();
- var
- Zapis: Tzapis;
- ft: TextFile; // текстовый файл
- fr: file of TZapis; // типизированный файл - файл записей
- n, kol: integer;
- ch: char;
- FileName:string[80];
- begin
- if ParamCount<2 then
- begin
- writeln('Мало параметров '#13#10'Press enter');
- readln; exit
- end;
- FileName:= Paramstr(2);
- AssignFile(ft, FileName);
- Try Reset(ft);
- Except
- writeln('Error: не удалось открыть текстовый файл ',Paramstr(2));
- write('Нажмите ENTER'); readln; exit
- end;
- kol:=0;
- repeat
- readln(ft, n); Zapis.Trans:=TTrans(n);
- readln(ft, Zapis.Nom);
- readln(ft, Zapis.Ost);
- write(fr, Zapis);
- inc(kol);
- until eof(ft);
- CloseFile(fr);
- CloseFile(ft);
- writeln('Создан типизированный файл из ',kol,' записей');
- write('Нажмите ENTER');
- readln;
- end;
- //--------------------------------------------------------------
- //-------------- третья часть: поиск в типизированном файле ----
- Procedure FindTRANS();
- var
- Zapis: TZapis;
- fr: file of TZapis;
- n, kol: integer;
- FileName:string[80];
- begin
- if ParamCount<1 then
- begin
- writeln('Мало параметров '#13#10'Press enter');
- readln; exit
- end;
- FileName := ParamStr(1);
- AssignFile(fr, FileName);
- Try ReSet(fr); // или {$I-} ReSet(fr); {$I+} if IOResult<>0 then
- Except
- writeln('Error: не удалось открыть типизированный файл ',FileName);
- write('Press ENTER'); readln; exit
- end;
- kol:=0;
- while not eof(fr) and (kol=0) do
- begin
- read(fr, Stud); // считывание
- if ((Stud.o1=5) or (Stud.o2=5) or (Stud.o3=5)) and
- (Stud.Kurs = Kurs1) and
- (ANSIUpperCase(Stud.FIO.I) = 'ИВАН') then // сравнение в верхнем регистре
- begin
- writeln('Найден ', Stud.FIO.I,' ',Stud.FIO.O,' ',Stud.FIO.F,
- ' оценки ', Stud.o1, ' ', Stud.o2,' ', Stud.o3 );
- inc(kol);
- // Изменение считанного
- Stud.o1:=3; Stud.o2:=3; Stud.o3:=3;
- n:=FilePos(fr)-1; // текущая позиция найденной записи
- // запись изменений "поверх" предыдущей версии
- seek(fr, n); // изменить тек.позицию в файле
- write(fr, Stud);
- // запись в файле изменена
- writeln('В файле изменена запись номер ', n+1)
- end;
- end;
- if kol=0 then
- writeln('Данные, соответствующие запросу, не найдены');
- CloseFile(fr);
- write('Press ENTER'); readln;
- end;
- //--------------------------------------------------------------
- //-------------- просмотр типизированного файла ----
- Procedure ViewFile();
- var
- Zapis: TZapis;
- fr: file of Tzapis;
- n, kol: integer;
- FileName:string[80];
- begin
- if ParamCount<1 then
- begin
- writeln('Мало параметров '#13#10'Press enter');
- readln; exit
- end;
- FileName := ParamStr(1);
- AssignFile(fr, FileName);
- Try ReSet(fr); // или {$I-} ReSet(fr); {$I+} if IOResult<>0 then
- Except
- writeln('Error: не удалось открыть типизированный файл ',FileName);
- write('Press ENTER'); readln; exit
- end;
- kol:=0;
- while not eof(fr) do
- begin
- read(fr, Zapis); // считывание
- writeln('Найден ', ord(Zapis.Trans),' ', ' номер ', Zapis.Nom, ' остановки ', Zapis.Ost);
- inc(kol);
- end;
- if kol=0 then
- writeln('Данные не найдены')
- else
- writeln('Найдено ',kol, ' записей');
- CloseFile(fr);
- write('Press ENTER'); readln;
- end;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement