Advertisement
Vladislav8653

когда выйдет?

Mar 2nd, 2023
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 13.19 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, Vcl.Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Label1: TLabel;
  12.     Edit1: TEdit;
  13.     Button1: TButton;
  14.     StringGrid1: TStringGrid;
  15.     StringGrid2: TStringGrid;
  16.     Label2: TLabel;
  17.     StringGrid3: TStringGrid;
  18.     Button2: TButton;
  19.     Button3: TButton;
  20.     Edit2: TEdit;
  21.     OpenDialog1: TOpenDialog;
  22.     SaveDialog1: TSaveDialog;
  23.     PopupMenu1: TPopupMenu;
  24.     MainMenu1: TMainMenu;
  25.     N1: TMenuItem;
  26.     N2: TMenuItem;
  27.     N3: TMenuItem;
  28.     N4: TMenuItem;
  29.     N5: TMenuItem;
  30.     N6: TMenuItem;
  31.     procedure Button1Click(Sender: TObject);
  32.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  33.     procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  34.       const Value: string);
  35.     procedure StringGrid2SetEditText(Sender: TObject; ACol, ARow: Integer;
  36.       const Value: string);
  37.     procedure Button2Click(Sender: TObject);
  38.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);
  39.     procedure Button3Click(Sender: TObject);
  40.     procedure Edit1Change(Sender: TObject);
  41.     procedure Edit2Change(Sender: TObject);
  42.     procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
  43.     procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
  44.     procedure N5Click(Sender: TObject);
  45.     procedure N4Click(Sender: TObject);
  46.     procedure N3Click(Sender: TObject);
  47.     procedure N2Click(Sender: TObject);
  48.     procedure N6Click(Sender: TObject);
  49.   private
  50.     { Private declarations }
  51.   public
  52.     { Public declarations }
  53.   end;
  54.  
  55. var
  56.   Form1: TForm1;
  57.   Path, Result : String;
  58.   IsFileOpen, Flag, FlagButton : Boolean;
  59. implementation
  60.  
  61. {$R *.dfm}
  62.  
  63.  
  64.  
  65. procedure TForm1.Button1Click(Sender: TObject);
  66. var
  67.     N, I, J : Integer;
  68.     IsCorrect : Boolean;
  69. Const
  70.     WIDE = 82;
  71.     HEIGHT = 35;
  72. begin
  73.     IsCorrect := True;
  74.     Try
  75.         N := StrToInt(Edit1.Text);
  76.     Except
  77.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  78.         IsCorrect := False;
  79.         StringGrid1.Visible := False;
  80.         Edit1.Text := '';
  81.     End;
  82.     if IsCorrect then
  83.     Begin
  84.         StringGrid1.ColCount := N;
  85.  
  86.         //стоковые значения
  87.         StringGrid1.ScrollBars := ssHorizontal;
  88.         StringGrid1.Height := 55;
  89.         StringGrid1.Width := WIDE * 5;
  90.  
  91.         If N < 6 then
  92.         Begin
  93.             StringGrid1.Height := HEIGHT;
  94.             StringGrid1.ScrollBars := ssNone;
  95.             case N of
  96.                 1: StringGrid1.Width := WIDE;
  97.                 2: StringGrid1.Width := WIDE * 2 + 1;
  98.                 3: StringGrid1.Width := WIDE * 3;
  99.                 4: StringGrid1.Width := WIDE * 4;
  100.             end;
  101.         End;
  102.         for I := 0 to StringGrid1.RowCount - 1 do
  103.             for J := 0 to StringGrid1.ColCount - 1 do
  104.                 StringGrid1.Cells[J, I] := '';
  105.         StringGrid1.Visible := True;
  106.     End;
  107.  
  108. end;
  109.  
  110.  
  111. procedure TForm1.Button2Click(Sender: TObject);
  112. var
  113.     N, I, J : Integer;
  114.     IsCorrect : Boolean;
  115.     Arr : Array of Integer;
  116. Const
  117.     WIDE = 82;
  118.     HEIGHT = 35;
  119. begin
  120.     IsCorrect := True;
  121.     Try
  122.         N := StrToInt(Edit2.Text);
  123.     Except
  124.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  125.         IsCorrect := False;
  126.         StringGrid2.Visible := False;
  127.         Edit2.Text := '';
  128.     End;
  129.     if IsCorrect then
  130.     Begin
  131.         StringGrid2.ColCount := N;
  132.  
  133.         //стоковые значения
  134.         StringGrid2.ScrollBars := ssHorizontal;
  135.         StringGrid2.Height := 55;
  136.         StringGrid2.Width := WIDE * 5;
  137.  
  138.         If N < 6 then
  139.         Begin
  140.             StringGrid2.Height := HEIGHT;
  141.             StringGrid2.ScrollBars := ssNone;
  142.             case N of
  143.                 1: StringGrid2.Width := WIDE;
  144.                 2: StringGrid2.Width := WIDE * 2 + 1;
  145.                 3: StringGrid2.Width := WIDE * 3;
  146.                 4: StringGrid2.Width := WIDE * 4;
  147.             end;
  148.         End;
  149.         for I := 0 to StringGrid2.RowCount - 1 do
  150.             for J := 0 to StringGrid2.ColCount - 1 do
  151.                 StringGrid2.Cells[J, I] := '';
  152.         StringGrid2.Visible := True;
  153.         Button3.Enabled := True;
  154.     End;
  155.  
  156.  
  157. end;
  158.  
  159. procedure TForm1.Button3Click(Sender: TObject);
  160. Var
  161.     Num1, Num2 : String;
  162.     I : Integer;
  163.     Float1, Float2 : Real;
  164.     IsCorrect : Boolean;
  165. Const
  166.     WIDE = 82;
  167.     HEIGHT = 35;
  168. begin
  169.     For I := 0 to StringGrid1.ColCount - 1 Do
  170.         Num1 := Num1 + StringGrid1.Cells[I, 0];
  171.     For I := 0 to StringGrid2.ColCount - 1 Do
  172.         Num2 := Num2 + StringGrid2.Cells[I, 0];
  173.     IsCorrect := True;
  174.     Try
  175.         Float1 := StrToFloat(Num1);
  176.     Except
  177.         IsCorrect := False;
  178.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных в числе 1.'), 'Ошибка', MB_ICONSTOP);
  179.     End;
  180.     If IsCorrect then
  181.     Begin
  182.         Try
  183.             Float2 := StrToFloat(Num2);
  184.         Except
  185.             IsCorrect := False;
  186.             MessageBox(Form1.Handle, Pchar('Проверьте корректность данных в числе 2.'), 'Ошибка', MB_ICONSTOP);
  187.         End;
  188.     End;
  189.     If IsCorrect then
  190.     begin
  191.         Float1 := Float1/Float2;
  192.         Num1 := FloatToStr(Float1);
  193.         StringGrid3.ColCount := Num1.Length;
  194.         Result := Num1;
  195.         //стоковые значения
  196.         StringGrid3.ScrollBars := ssHorizontal;
  197.         StringGrid3.Height := 55;
  198.         StringGrid3.Width := WIDE * 5;
  199.         If Num1.Length < 6 then
  200.         Begin
  201.             StringGrid3.Height := HEIGHT;
  202.             StringGrid3.ScrollBars := ssNone;
  203.             case Num1.Length of
  204.                 1: StringGrid3.Width := WIDE;
  205.                 2: StringGrid3.Width := WIDE * 2 + 1;
  206.                 3: StringGrid3.Width := WIDE * 3;
  207.                 4: StringGrid3.Width := WIDE * 4;
  208.             end;
  209.         End;
  210.  
  211.         For I := 1 To Num1.Length Do
  212.         begin
  213.             StringGrid3.Cells[I - 1, 0] := Num1[I];
  214.         end;
  215.         StringGrid3.Visible := True;
  216.     end;
  217. end;
  218.  
  219. procedure TForm1.Edit1Change(Sender: TObject);
  220. begin
  221.     StringGrid3.Visible := False;
  222.     If Length(Edit1.Text) = 0 then
  223.     Begin
  224.         Button1.Enabled := False;
  225.     End
  226.     else
  227.     Begin
  228.         Button1.Enabled := True;
  229.  
  230.     End;
  231.   //  Button3.Enabled := False;
  232. end;
  233.  
  234. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  235. begin
  236.     if (Key = #13) and (Button1.Enabled) then
  237.         Button1.Click;
  238.     If (Not(Key In ['1'..'9', #08, #46])) Then
  239.         Key := #0;
  240.     If Key = '.' then
  241.         Key := Char(0);
  242.  
  243. end;
  244.  
  245. procedure TForm1.Edit2Change(Sender: TObject);
  246. begin
  247.     StringGrid3.Visible := False;
  248.     If Length(Edit2.Text) = 0 then
  249.         Button2.Enabled := False
  250.     else
  251.         Button2.Enabled := True;
  252.     // Button3.Enabled := False;
  253. end;
  254.  
  255. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
  256. begin
  257.     if (Key = #13) and (Button2.Enabled) then
  258.         Button2.Click;
  259.     If (Not(Key In ['1'..'9', #08, #46])) Then
  260.         Key := #0;
  261.      If Key = '.' then
  262.         Key := Char(0);
  263. end;
  264.  
  265. Function Open (): String;
  266. Begin
  267.     With Form1 Do
  268.     Begin
  269.         If OpenDialog1.Execute Then
  270.         Begin
  271.             Path := OpenDialog1.FileName;
  272.             IsFileOpen := True;
  273.         End
  274.         Else
  275.             IsFileOpen := False;
  276.     End;
  277.     Open := Path;
  278. End;
  279.  
  280. function Check1 (N : String): Boolean;
  281. Var
  282.     IsCorrect : Boolean;
  283.     Temp : Real;
  284. Begin
  285.     IsCorrect := True;
  286.     try
  287.         Temp := StrToFloat(N);
  288.     except
  289.         IsCorrect := False;
  290.         MessageBox(Form1.Handle, Pchar('Не получилось считать число. Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  291.     end;
  292.     Check1 := IsCorrect;
  293. End;
  294.  
  295. function TakeNumbers (Var FileOutput: TextFile) : String;
  296. Var
  297.     N : String;
  298.     IsRight: Boolean;
  299. Begin
  300.     IsRight := True;
  301.     Try
  302.         Readln(FileOutput, N);
  303.         N := Trim (N);
  304.         IsRight := Check1(N);
  305.     Except
  306.     End;
  307.     If(Not(IsRight)) Then
  308.         TakeNumbers := ''
  309.     Else
  310.         TakeNumbers := N;
  311. End;
  312.  
  313.  
  314. procedure TForm1.N2Click(Sender: TObject);
  315. Var
  316.     FileInput: TextFile;
  317.     N1, N2 : String;
  318.     I : Integer;
  319.     IsCorrect : Boolean;
  320. begin
  321.     Path := Open;
  322.     AssignFile(FileInput, Path);
  323.     Reset(FileInput);
  324.     If(IsFileOpen) Then
  325.     Begin
  326.         N1 := TakeNumbers(FileInput);
  327.     End;
  328.     If Not(N1 = '') then
  329.     begin
  330.         N2 := TakeNumbers(FileInput);
  331.     end;
  332.     If (N1 <> '') and (N2 <> '') and (StrToFloat(N2) <> 0) then
  333.     Begin
  334.         Edit1.Text := IntToStr(N1.Length);
  335.         Button1Click(Sender);
  336.         For I := 1 To N1.Length Do
  337.         begin
  338.             StringGrid1.Cells[I - 1, 0] := N1[I];
  339.         end;
  340.         Edit2.Visible := True;
  341.         Button2.Visible := True;
  342.         Label2.Visible := True;
  343.         Edit2.Text := IntToStr(N2.Length);
  344.         Button2Click(Sender);
  345.         For I := 1 To N2.Length Do
  346.         begin
  347.             StringGrid2.Cells[I - 1, 0] := N2[I];
  348.         end;
  349.         Button3.Visible := True;
  350.     End;
  351.     If  (StrToFloat(N2) = 0) then
  352.         MessageBox(Form1.Handle, Pchar('На нуль делить нельзя! Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  353.     CloseFile(FileInput);
  354. end;
  355.  
  356. procedure TForm1.N3Click(Sender: TObject);
  357. Var
  358.     FileOutput: TextFile;
  359.     IsCorrect : Boolean;
  360. begin
  361.     IsCorrect := True;
  362.     Path := Open;
  363.     If (IsFileOpen) Then
  364.     Begin
  365.         try
  366.             AssignFile(FileOutput, Path);
  367.             Rewrite(FileOutput);
  368.             Write(FileOutput, Result);
  369.         except
  370.             IsCorrect := False;
  371.             Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
  372.         end;
  373.         if IsCorrect then
  374.         Begin
  375.             Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  376.             CloseFile(FileOutput);
  377.         End;
  378.     End;
  379. end;
  380.  
  381. procedure TForm1.N4Click(Sender: TObject);
  382. begin
  383.      Application.MessageBox('Программа делит 2 числа и выводит результат.'#13#10'Максимальное кол-во символов в числе: 9.'#13#10'При записи вещественных чисел используйте запятую (не точку).', 'Инструкция', 0);
  384. end;
  385.  
  386. procedure TForm1.N5Click(Sender: TObject);
  387. begin
  388.      Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  389. end;
  390.  
  391. procedure TForm1.N6Click(Sender: TObject);
  392. begin
  393.     Application.MessageBox('В файле должно быть 2 строчки с двумя числами', 'Инструкция к файлам', 0);
  394. end;
  395.  
  396. procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
  397. Var
  398.     I : Integer;
  399. begin
  400.     If (Not(Key In ['0'..'9', #08, #46, '-', ','])) Then
  401.         Key := #0;
  402.     With Sender As TStringGrid Do
  403.         If (Length(StringGrid1.Cells[Col, Row]) > 0) then
  404.             If (Not(Key In [#08, #46])) Then
  405.                 Key := #0;
  406. end;
  407.  
  408. procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  409.   const Value: string);
  410. var
  411.     I : Integer;
  412.     IsCorrect : Boolean;
  413.     Temp : String;
  414. begin
  415.     IsCorrect := True;
  416.     StringGrid3.Visible := False;
  417.     for I := 0 to StringGrid1.ColCount - 1 do
  418.         If (Length(StringGrid1.Cells[I, 0]) = 0) Then
  419.         begin
  420.             //FlagButton := False;
  421.             //StringGrid2.visible := False;
  422.             Button2.Visible := False;
  423.             Edit2.Visible := False;
  424.             Label2.Visible := False;
  425.             IsCorrect := False;
  426.         end;
  427.     If IsCorrect then
  428.     begin
  429.         //FlagButton := True;
  430.         //StringGrid2.visible := True;
  431.         Button2.Visible := True;
  432.         Edit2.Visible := True;
  433.         Label2.Visible := True;
  434.     end;
  435. end;
  436.  
  437. procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);
  438. begin
  439.     If (Not(Key In ['0'..'9', #08, #46, '-', ','])) Then
  440.         Key := #0;
  441.      With Sender As TStringGrid Do
  442.         If (Length(StringGrid2.Cells[Col, Row]) > 0) then
  443.             If (Not(Key In [#08, #46])) Then
  444.                 Key := #0;
  445. end;
  446.  
  447. procedure TForm1.StringGrid2SetEditText(Sender: TObject; ACol, ARow: Integer;
  448.   const Value: string);
  449. var
  450.     I : Integer;
  451.     IsCorrect : Boolean;
  452. begin
  453.     IsCorrect := True;
  454.     StringGrid3.Visible := False;
  455.     for I := 0 to StringGrid2.ColCount - 1 do
  456.         If (Length(StringGrid2.Cells[I, 0]) = 0) Then
  457.         begin
  458.             //FlagButton := False;
  459.             //StringGrid3.visible := False;
  460.             Button3.Visible := False;
  461.             IsCorrect := False;
  462.         end;
  463.     If IsCorrect then
  464.     begin
  465.         //FlagButton := True;
  466.         //StringGrid3.visible := True;
  467.         Button3.Visible := True;
  468.     end;
  469. end;
  470.  
  471. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement