Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Type Stud=Record
- No: integer;
- name: string[12];
- Gr: string[8];
- o1, o2, o3: integer;
- end;
- Var sf: string;
- { TForm1 }
- procedure TabForFile;
- var i: integer;
- begin
- with Form1.StringGrid1 do
- begin
- ColCount:=6;
- RowCount:=50;
- ColWidths[0]:=20;
- ColWidths[1]:=120;
- ColWidths[2]:=80;
- ColWidths[3]:=40;
- ColWidths[4]:=40;
- ColWidths[5]:=40;
- Cells[0,0]:='№';
- Cells[1,0]:='Фамилия';
- Cells[2,0]:='Группа';
- Cells[3,0]:='Оценка 1';
- Cells[4,0]:='Оценка 2';
- Cells[5,0]:='Оценка 3';
- width:=25;
- for i:=0 to ColCount-1 do
- width:=width+ColWidths[i];
- end;
- end;
- Procedure ClearTab;
- var i, j: integer;
- begin
- with Form1.StringGrid1 do
- for i:=1 to RowCount-1 do
- if (Cells[0,i]<>'') then
- for j:=0 to ColCount-1 do
- begin
- Cells[j,i]:='';
- end;
- end;
- Procedure SaveToFileofStud;
- Var f: file of Stud;
- s: Stud;
- i: integer;
- begin
- Assignfile(f, sf);
- Rewrite(f);
- with Form1.StringGrid1 do
- for i:=1 to RowCount-1 do
- If (Cells[0,i]<>'') then
- begin
- s.No:=StrToInt(Cells[0,i]);
- s.name:=Cells[1,i];
- s.Gr:=Cells[2,i];
- s.o1:=StrToInt(Cells[3,i]);
- s.o2:=StrToInt(Cells[4,i]);
- s.o3:=StrToInt(Cells[5,i]);
- write(f,s);
- end;
- Closefile(f);
- end;
- procedure LoadFromFileOfStud;
- var f: file of stud;
- s: stud;
- i: integer;
- begin
- AssignFile(f, sf);
- Reset(f);
- with Form1.StringGrid1 do
- for i:=1 to filesize(f) do
- begin
- read(f,s);
- Cells[0,i]:=IntToStr(s.No);
- Cells[1,i]:=s.Name;
- Cells[2,i]:=s.Gr;
- Cells[3,i]:=IntToStr(s.o1);
- Cells[4,i]:=IntToStr(s.o2);
- Cells[5,i]:=IntToStr(s.o3);
- end;
- Closefile(f);
- end;
- procedure TForm1.MenuItem2Click(Sender: TObject);
- begin
- ClearTab;
- StringGrid1.Modified:=False;
- sf:='';
- Form1.Caption:='Form1';
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- TabForFile;
- sf:='';
- StringGrid1.Options:=StringGrid1.Options+[goEditing];
- end;
- procedure TForm1.MenuItem3Click(Sender: TObject);
- begin
- If StringGrid1.Modified then
- case MessageDlg('Текст был изменён' + #13 + 'Сохранить его?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
- mrYes: MenuItem5Click(self);
- mrNo: ;
- mrCancel: Exit;
- end;
- If openDialog1.Execute then
- begin
- sf:=OpenDialog1.FileName;
- LoadFromFileOfStud;
- StringGrid1.Modified:=False;
- Form1.Caption:='Form1' + sf;
- end;
- end;
- procedure TForm1.MenuItem4Click(Sender: TObject);
- begin
- if StringGrid1.Modified then
- case MessageDlg('Данные о студентах были изменены' + #13 + 'Сохранить их?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
- mrYes: MenuItem5Click(self);
- mrNo:;
- mrCancel: Exit;
- end;
- ClearTab;
- StringGrid1.Modified:=False;
- sf:='';
- Form1.Caption:='Form1';
- end;
- procedure TForm1.MenuItem5Click(Sender: TObject);
- begin
- if (sf='') then MenuItem5Click(self)
- else
- begin
- SaveToFileOfStud;
- StringGrid1.Modified:= False;
- end;
- end;
- procedure TForm1.MenuItem6Click(Sender: TObject);
- begin
- If SaveDialog1.Execute then
- begin
- sf:=SaveDialog1.FileName;
- SaveToFileofStud;
- StringGrid1.Modified:=false;
- Form1.Caption:='Form1'+sf;
- end;
- end;
- procedure TForm1.MenuItem7Click(Sender: TObject);
- begin
- If StringGrid1.Modified then
- case MessageDlg('Таблица была изменена' + #13 + 'Сохранить её?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
- mrYes: MenuItem5Click(self);
- mrNo: ;
- mrCancel: Exit;
- end;
- Close;
- end;
- procedure TForm1.MenuItem9Click(Sender: TObject);
- var s: stud;
- f, nf: file of Stud;
- im: string;
- begin
- // Подготавливаем файл для чтения
- Assignfile(f, sf);
- Reset(f);
- // Получаем имя нового файла
- im:=InPutBox('Введите имя нового файла','0','Список2');
- // Подготавливаем файл для записи
- Assignfile(nf, im);
- Rewrite(nf);
- // Записываем значения из первого файла в другой
- // Только те строки, которые не пустые и имеют чётный номер
- while not EOF(f) do
- begin
- read(f,s);
- if (s.No mod 2 = 0) then
- write(nf,s);
- end;
- // Закрывать надо ОБА файла
- Closefile(f);
- Closefile(nf);
- ClearTab;
- sf:=im;
- LoadFromFileOfStud;
- end;
- // в предыдущей процедуре ты создала файл, имя этого файла и осталось в этой процедуре
- // новая процедура
- procedure TForm1.MenuItem10Click(Sender: TObject);
- var f: file of stud;
- s: stud;
- i: integer;
- j: integer;
- begin
- // стандартный диалог перед выбором файла
- If StringGrid1.Modified then
- case MessageDlg('Текст был изменён' + #13 + 'Сохранить его?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
- mrYes: MenuItem5Click(self);
- mrNo: ;
- mrCancel: Exit;
- end;
- // Диалог выбора файла
- If openDialog1.Execute then
- begin
- // Очищаем таблицу
- ClearTab;
- // Получаем имя нужного файла
- sf:=OpenDialog1.FileName;
- // Файл для чтения
- AssignFile(f, sf);
- Reset(f);
- i:=1;
- // Прверка нет ли конца файла и количество студентов,
- // которые уже были записаны в этом цикле в таблицу
- // Удобно тем что А - менее громоздко, и Б - студентов
- // В файле может быть меньше трёх, например 2, и тогда этот цикл просто выведет
- // двух студентов, иначе как в прошлой версии у тебя произошла бы либо ошибка либо зацикливание
- while (not Eof(nf) and i < 4) do
- with Form1.StringGrid1 do
- begin
- // Считываем одного студента
- read(nf,s);
- // Заполняем им таблицу
- Cells[0,i]:=IntToStr(s.No);
- Cells[1,i]:=s.Name;
- Cells[2,i]:=s.Gr;
- Cells[3,i]:=IntToStr(s.o1);
- Cells[4,i]:=IntToStr(s.o2);
- Cells[5,i]:=IntToStr(s.o3);
- //
- i:=i+1
- end;
- StringGrid1.Modified:=False;
- Form1.Caption:='Form1 FIRST 3 from ' + sf;
- // Закрываем файл
- Closefile(f);
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement