Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Type Stud=Record
  2.      No: integer;
  3.      name: string[12];
  4.      Gr: string[8];
  5.      o1, o2, o3: integer;
  6.  end;
  7. Var sf: string;
  8.  
  9. { TForm1 }
  10. procedure TabForFile;
  11. var i: integer;
  12. begin
  13.   with Form1.StringGrid1 do
  14.     begin
  15.       ColCount:=6;
  16.       RowCount:=50;
  17.       ColWidths[0]:=20;
  18.       ColWidths[1]:=120;
  19.       ColWidths[2]:=80;
  20.       ColWidths[3]:=40;
  21.       ColWidths[4]:=40;
  22.       ColWidths[5]:=40;
  23.       Cells[0,0]:='№';
  24.       Cells[1,0]:='Фамилия';
  25.       Cells[2,0]:='Группа';
  26.       Cells[3,0]:='Оценка 1';
  27.       Cells[4,0]:='Оценка 2';
  28.       Cells[5,0]:='Оценка 3';
  29.       width:=25;
  30.       for i:=0 to ColCount-1 do
  31.         width:=width+ColWidths[i];
  32.     end;
  33. end;
  34.  
  35. Procedure ClearTab;
  36. var i, j: integer;
  37. begin
  38.   with Form1.StringGrid1 do
  39.   for i:=1 to RowCount-1 do
  40.     if (Cells[0,i]<>'') then
  41.       for j:=0 to ColCount-1 do
  42.         begin
  43.           Cells[j,i]:='';
  44.         end;
  45. end;
  46.  
  47. Procedure SaveToFileofStud;
  48. Var f: file of Stud;
  49.     s: Stud;
  50.     i: integer;
  51. begin
  52.   Assignfile(f, sf);
  53.   Rewrite(f);
  54.   with Form1.StringGrid1 do
  55.   for i:=1 to RowCount-1 do
  56.   If (Cells[0,i]<>'') then
  57.     begin
  58.       s.No:=StrToInt(Cells[0,i]);
  59.       s.name:=Cells[1,i];
  60.       s.Gr:=Cells[2,i];
  61.       s.o1:=StrToInt(Cells[3,i]);
  62.       s.o2:=StrToInt(Cells[4,i]);
  63.       s.o3:=StrToInt(Cells[5,i]);
  64.       write(f,s);
  65.     end;
  66.   Closefile(f);
  67. end;
  68.  
  69. procedure LoadFromFileOfStud;
  70. var f: file of stud;
  71.     s: stud;
  72.     i: integer;
  73. begin
  74.   AssignFile(f, sf);
  75.   Reset(f);
  76.   with Form1.StringGrid1 do
  77.   for i:=1 to filesize(f) do
  78.     begin
  79.       read(f,s);
  80.       Cells[0,i]:=IntToStr(s.No);
  81.       Cells[1,i]:=s.Name;
  82.       Cells[2,i]:=s.Gr;
  83.       Cells[3,i]:=IntToStr(s.o1);
  84.       Cells[4,i]:=IntToStr(s.o2);
  85.       Cells[5,i]:=IntToStr(s.o3);
  86.     end;
  87.   Closefile(f);
  88. end;
  89.  
  90.  
  91. procedure TForm1.MenuItem2Click(Sender: TObject);
  92. begin
  93.   ClearTab;
  94.   StringGrid1.Modified:=False;
  95.   sf:='';
  96.   Form1.Caption:='Form1';
  97. end;
  98.  
  99. procedure TForm1.FormCreate(Sender: TObject);
  100. begin
  101.   TabForFile;
  102.   sf:='';
  103.   StringGrid1.Options:=StringGrid1.Options+[goEditing];
  104. end;
  105.  
  106. procedure TForm1.MenuItem3Click(Sender: TObject);
  107. begin
  108.   If StringGrid1.Modified then
  109.     case MessageDlg('Текст был изменён' + #13 + 'Сохранить его?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
  110.       mrYes: MenuItem5Click(self);
  111.       mrNo: ;
  112.       mrCancel: Exit;
  113.     end;
  114.   If openDialog1.Execute then
  115.     begin
  116.       sf:=OpenDialog1.FileName;
  117.       LoadFromFileOfStud;
  118.       StringGrid1.Modified:=False;
  119.       Form1.Caption:='Form1' + sf;
  120.     end;
  121. end;
  122.  
  123. procedure TForm1.MenuItem4Click(Sender: TObject);
  124. begin
  125.     if StringGrid1.Modified then
  126.       case MessageDlg('Данные о студентах были изменены' + #13 + 'Сохранить их?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
  127.         mrYes: MenuItem5Click(self);
  128.         mrNo:;
  129.         mrCancel: Exit;
  130.       end;
  131.     ClearTab;
  132.     StringGrid1.Modified:=False;
  133.     sf:='';
  134.     Form1.Caption:='Form1';
  135. end;
  136.  
  137. procedure TForm1.MenuItem5Click(Sender: TObject);
  138. begin
  139.   if (sf='') then MenuItem5Click(self)
  140.   else
  141.     begin
  142.       SaveToFileOfStud;
  143.       StringGrid1.Modified:= False;
  144.     end;
  145. end;
  146.  
  147. procedure TForm1.MenuItem6Click(Sender: TObject);
  148. begin
  149.   If SaveDialog1.Execute then
  150.     begin
  151.       sf:=SaveDialog1.FileName;
  152.       SaveToFileofStud;
  153.       StringGrid1.Modified:=false;
  154.       Form1.Caption:='Form1'+sf;
  155.     end;
  156. end;
  157.  
  158. procedure TForm1.MenuItem7Click(Sender: TObject);
  159. begin
  160.   If StringGrid1.Modified then
  161.     case MessageDlg('Таблица была изменена' + #13 + 'Сохранить её?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
  162.       mrYes: MenuItem5Click(self);
  163.       mrNo: ;
  164.       mrCancel: Exit;
  165.     end;
  166.   Close;
  167. end;
  168.  
  169. procedure TForm1.MenuItem9Click(Sender: TObject);
  170. var s: stud;
  171.     f, nf: file of Stud;
  172.     im: string;
  173. begin
  174.   // Подготавливаем файл для чтения
  175.   Assignfile(f, sf);
  176.   Reset(f);
  177.   // Получаем имя нового файла
  178.   im:=InPutBox('Введите имя нового файла','0','Список2');
  179.   // Подготавливаем файл для записи
  180.   Assignfile(nf, im);
  181.   Rewrite(nf);
  182.   // Записываем значения из первого файла в другой
  183.   // Только те строки, которые не пустые и имеют чётный номер
  184.   while not EOF(f) do
  185.     begin
  186.       read(f,s);
  187.       if (s.No mod 2 = 0) then
  188.         write(nf,s);
  189.     end;
  190.   // Закрывать надо ОБА файла
  191.   Closefile(f);
  192.   Closefile(nf);
  193.   ClearTab;
  194.   sf:=im;
  195.   LoadFromFileOfStud;
  196. end;
  197.  
  198. // в предыдущей процедуре ты создала файл, имя этого файла и осталось в этой процедуре
  199. // новая процедура
  200. procedure TForm1.MenuItem10Click(Sender: TObject);
  201. var f: file of stud;
  202.     s: stud;
  203.     i: integer;
  204.     j: integer;
  205. begin
  206.  
  207.   // стандартный диалог перед выбором файла
  208.   If StringGrid1.Modified then
  209.     case MessageDlg('Текст был изменён' + #13 + 'Сохранить его?', mtConfirmation,[mbYes, mbNo, mbCancel],0) of
  210.       mrYes: MenuItem5Click(self);
  211.       mrNo: ;
  212.       mrCancel: Exit;
  213.     end;
  214.  
  215.   // Диалог выбора файла
  216.   If openDialog1.Execute then
  217.     begin
  218.       // Очищаем таблицу
  219.       ClearTab;
  220.       // Получаем имя нужного файла
  221.       sf:=OpenDialog1.FileName;
  222.       // Файл для чтения
  223.       AssignFile(f, sf);
  224.       Reset(f);
  225.  
  226.       i:=1;
  227.       // Прверка нет ли конца файла и количество студентов,
  228.       // которые уже были записаны в этом цикле в таблицу
  229.       // Удобно тем что А - менее громоздко, и Б - студентов
  230.       // В файле может быть меньше трёх, например 2, и тогда этот цикл просто выведет
  231.       // двух студентов, иначе как в прошлой версии у тебя произошла бы либо ошибка либо зацикливание
  232.       while (not Eof(nf) and i < 4) do
  233.       with Form1.StringGrid1 do
  234.         begin
  235.           // Считываем одного студента
  236.           read(nf,s);
  237.           // Заполняем им таблицу
  238.           Cells[0,i]:=IntToStr(s.No);
  239.           Cells[1,i]:=s.Name;
  240.           Cells[2,i]:=s.Gr;
  241.           Cells[3,i]:=IntToStr(s.o1);
  242.           Cells[4,i]:=IntToStr(s.o2);
  243.           Cells[5,i]:=IntToStr(s.o3);
  244.           //
  245.           i:=i+1
  246.         end;
  247.       StringGrid1.Modified:=False;
  248.       Form1.Caption:='Form1 FIRST 3 from ' + sf;
  249.  
  250.       // Закрываем файл
  251.       Closefile(f);
  252.     end;
  253.  
  254. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement