Advertisement
Vladislav8653

4th

Feb 8th, 2023
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 10.23 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.StdCtrls, Vcl.Grids, Vcl.Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     StringGrid1: TStringGrid;
  12.     Edit1: TEdit;
  13.     Edit2: TEdit;
  14.     Label1: TLabel;
  15.     Label2: TLabel;
  16.     Label3: TLabel;
  17.     Button1: TButton;
  18.     MainMenu1: TMainMenu;
  19.     PopupMenu1: TPopupMenu;
  20.     OpenDialog1: TOpenDialog;
  21.     SaveDialog1: TSaveDialog;
  22.     N1: TMenuItem;
  23.     N2: TMenuItem;
  24.     N3: TMenuItem;
  25.     N4: TMenuItem;
  26.     N5: TMenuItem;
  27.     procedure Button1Click(Sender: TObject);
  28.     procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
  29.     procedure Edit2Change(Sender: TObject);
  30.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  31.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);
  32.     procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  33.       const Value: string);
  34.     procedure Edit1Change(Sender: TObject);
  35.     procedure N4Click(Sender: TObject);
  36.     procedure N5Click(Sender: TObject);
  37.     procedure N2Click(Sender: TObject);
  38.     procedure N3Click(Sender: TObject);
  39.   private
  40.     { Private declarations }
  41.   public
  42.     { Public declarations }
  43.   end;
  44.  
  45. var
  46.   Form1: TForm1;
  47.   Path, Result : String;
  48.   IsFileOpen, Flag, FlagButton : Boolean;
  49.  
  50. implementation
  51.  
  52. {$R *.dfm}
  53.  
  54.  
  55. procedure TForm1.Button1Click(Sender: TObject);
  56. var
  57.     X, N, B, I, Count, Sum : Integer;
  58.     Arr : Array of Integer;
  59. begin
  60.     Try
  61.         X := StrToInt(Edit1.Text);
  62.     Except
  63.         Application.MessageBox('Check data correctness!', 'Error', MB_ICONSTOP);
  64.         Edit1.Text := '';
  65.     End;
  66.     Try
  67.         N := StrToInt(Edit2.Text);
  68.     Except
  69.         Application.MessageBox('Check data correctness!', 'Error', MB_ICONSTOP);
  70.         Edit2.Text := '';
  71.     End;
  72.     SetLength(Arr, N);
  73.     Sum := 0;
  74.     For I := Low(Arr) to High(Arr) do
  75.     Begin
  76.         If Length(StringGrid1.Cells[I, 0]) <> 0 then
  77.             Arr[I]:= StrToInt(StringGrid1.Cells[I,0])
  78.         else
  79.             Arr[I] := 0;
  80.     End;
  81.     B := Arr[N - 1];
  82.     For I := (N - 2) Downto 0 Do
  83.     Begin
  84.         B := Arr[I] + (B * X);
  85.     End;
  86.     Label3.Visible := true;
  87.     Label3.Caption := 'Ответ: ' + IntToStr(B);
  88. end;
  89.  
  90.  
  91.  
  92. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  93. const
  94.     MAX = 5;
  95. begin
  96.     If ((Key = #13) And (Button1.Enabled)) Then
  97.         Button1.Click;
  98.     If (Not(Key In ['0'..'9', #08, #46, '-'])) Then
  99.         Key := #0;
  100.     If (Length(Edit1.Text) = MAX) Then
  101.         If (Not(Key In [#08, #46])) Then
  102.             Key := #0;
  103.     If (Length(Edit1.Text) = 0) then
  104.         If (Not(Key In ['1'..'9', #08, #46, '-'])) Then
  105.             Key := #0;
  106.     If (Length(Edit1.Text) <> 0) and (Key = '-')then
  107.         Key := #0;
  108. end;
  109.  
  110. procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  111.   const Value: string);
  112. Var
  113.     I, J : Integer;
  114. begin
  115.     Label3.Visible := False;
  116.     FlagButton := true;
  117.     for I := 0 to StringGrid1.RowCount - 1 do
  118.         for J := 0 to StringGrid1.ColCount - 1 do
  119.             If Length(StringGrid1.Cells[J, I]) = 0 Then
  120.                 FlagButton := false;
  121.     If not(flag)then
  122.         Button1.Enabled := False;
  123.     If (Length(Edit1.Text) <> 0) and (Length(Edit2.Text) <> 0) and (FlagButton = true) then
  124.         Button1.Enabled := True;
  125. end;
  126.  
  127.  
  128. procedure TForm1.Edit1Change(Sender: TObject);
  129. begin
  130.     //N3.Enabled := False;
  131.     If (Length(Edit1.Text) = 0)then
  132.         Button1.Enabled := False;
  133.     If (Length(Edit1.Text) <> 0) and (Length(Edit2.Text) <> 0) and (FlagButton = true) then
  134.         Button1.Enabled := True;
  135.  
  136.  
  137.  
  138.     Label3.Visible := False;
  139.  
  140. end;
  141.  
  142. procedure TForm1.Edit2Change(Sender: TObject);
  143. var
  144.     N: Integer;
  145. const
  146.     MAX = 3;
  147.     STEP = 81;
  148.     THREE_CELLS = 246;
  149.     HEIGHT = 57;
  150.     STEP_H = 35;
  151.     LEFT = 10;  
  152.     STEP_L2 = 45;
  153.     STEP_L1 = 83;
  154. begin
  155.     if Edit2.Text <> '' then
  156.     Begin
  157.         N := StrToInt(Edit2.Text);
  158.         StringGrid1.ColCount := N;
  159.         StringGrid1.Width := THREE_CELLS;
  160.         StringGrid1.Height := HEIGHT;
  161.         StringGrid1.Left := LEFT;
  162.         if N = 3 then
  163.             StringGrid1.Height := STEP_H;
  164.         if N = 2 then
  165.         Begin
  166.             StringGrid1.Width := THREE_CELLS - STEP;
  167.             StringGrid1.Height := STEP_H;
  168.             StringGrid1.Left := LEFT + STEP_L2;
  169.         End;
  170.         if N = 1 then
  171.         Begin //нахуя я это делал, это не надо было. N никогда не равно 1..
  172.             StringGrid1.Width := THREE_CELLS - STEP - STEP;
  173.             StringGrid1.Height := STEP_H;
  174.             StringGrid1.Left := LEFT + STEP_L1;
  175.         End;
  176.         StringGrid1.Visible := True;
  177.     End
  178.     Else
  179.         StringGrid1.Visible := False;
  180.     //N3.Enabled := False;
  181.     If (Length(Edit2.Text) = 0)then
  182.         Button1.Enabled := False;
  183.     If (Length(Edit2.Text) <> 0) and (Length(Edit2.Text) <> 0) and (FlagButton = true) then
  184.         Button1.Enabled := True;
  185.     Label3.Visible := False;
  186. end;
  187.  
  188. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
  189. const
  190.     MAX = 5;
  191. begin
  192.     If ((Key = #13) And (Button1.Enabled)) Then
  193.         Button1.Click;
  194.     If (Not(Key In ['0'..'9', #08, #46])) Then
  195.         Key := #0;
  196.     If (Length(Edit2.Text) = MAX) Then
  197.         If (Not(Key In [#08, #46])) Then
  198.             Key := #0;
  199.     if (Length(Edit2.Text) = 0) then
  200.         If (Not(Key In ['2'..'9', #08, #46])) Then
  201.             Key := #0;
  202. end;
  203.  
  204. procedure TForm1.N4Click(Sender: TObject);
  205. begin
  206.      Application.MessageBox('Программа вычисляет многочлен А1*x + А2*x^2 + А3*x^3 + ... + АN*x^N.'#13#10'Диапазон X: -9999...99999'#13#10'Диапазон N: 2...99999'#13#10'Диапазон элементов массива: -9999...99999', 'Инструкция', 0);
  207. end;
  208.  
  209. procedure TForm1.N5Click(Sender: TObject);
  210. begin
  211.     Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  212. end;
  213.  
  214.  
  215. procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
  216. const   // тут я сделал ввод онли integer цифр, тк мне впадлу делать real
  217.     MAX = 4;
  218. begin
  219.     If (Not(Key In ['0'..'9', #08, #46,',','-'])) Then
  220.         Key := #0;
  221.     With Sender As TStringGrid Do
  222.     Begin
  223.         If (Length(StringGrid1.Cells[Col, Row]) <> 0) and (Key = '-') then
  224.             Key := Char(0);
  225.         If (Length(StringGrid1.Cells[Col, Row]) > MAX) then
  226.             If (Not(Key In [#08, #46])) Then
  227.                 Key := #0;
  228.     End;
  229. end;
  230.  
  231.  
  232. Function CheckFileData1(Num: String): Boolean;
  233. Const
  234.     MAX_LIM = 99999;
  235.     MIN_LIM = -9999;
  236. Var
  237.     NewNum: Real;
  238.     IsCorrect: Boolean;
  239. Begin
  240.     NewNum := 0;
  241.     IsCorrect := True;
  242.     Try
  243.         NewNum := StrToFloat(Num);
  244.     Except
  245.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  246.         IsCorrect := False;
  247.     End;
  248.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
  249.     Begin
  250.         Num := FloatToStr(NewNum);
  251.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  252.         IsCorrect := False;
  253.     End;
  254.     CheckFileData1 := IsCorrect;
  255. End;
  256.  
  257. Function CheckFileData2(Num: String): Boolean;
  258. Const
  259.     MAX_LIM = 99999;
  260.     MIN_LIM = 2;
  261. Var
  262.     NewNum: Real;
  263.     IsCorrect: Boolean;
  264. Begin
  265.     NewNum := 0;
  266.     IsCorrect := True;
  267.     Try
  268.         NewNum := StrToFloat(Num);
  269.     Except
  270.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  271.         IsCorrect := False;
  272.     End;
  273.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum <= MIN_LIM))) Then
  274.     Begin
  275.         Num := FloatToStr(NewNum);
  276.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  277.         IsCorrect := False;
  278.     End;
  279.     CheckFileData2 := IsCorrect;
  280. End;
  281.  
  282.  
  283. Function Open (): String;
  284. Begin
  285.     With Form1 Do
  286.     Begin
  287.         If OpenDialog1.Execute Then
  288.         Begin
  289.             Path := OpenDialog1.FileName;
  290.             IsFileOpen := True;
  291.         End
  292.         Else
  293.             IsFileOpen := False;
  294.     End;
  295.     Open := Path;
  296. End;
  297.  
  298. Function TakeDataFromFile1(Number1: String; Var FileOutput: TextFile): String;
  299. Var
  300.     IsRight: Boolean;
  301. Begin
  302.     IsRight := True;
  303.     Try
  304.         Readln(FileOutput, Number1);
  305.         IsRight := CheckFileData1(Number1);
  306.     Except
  307.     End;
  308.     If(Not(IsRight)) Then
  309.         TakeDataFromFile1 := ''
  310.     Else
  311.         TakeDataFromFile1 := Number1;
  312. End;
  313.  
  314. Function TakeDataFromFile2(Number2: String; Var FileOutput: TextFile): String;
  315. Var
  316.     IsRight : Boolean;
  317. Begin
  318.     IsRight := True;
  319.     Try
  320.         Read(FileOutput, Number2);
  321.         IsRight := CheckFileData2(Number2);
  322.     Except
  323.     End;
  324.     If(Not(IsRight)) Then
  325.         TakeDataFromFile2 := ''
  326.     Else
  327.         TakeDataFromFile2 := Number2;
  328. End;
  329.  
  330.  
  331. procedure TForm1.N2Click(Sender: TObject);
  332. Var
  333.     FileInput: TextFile;
  334.     Num : Integer;
  335.     Str1, Str2 : String;
  336. begin
  337.     Num := 0;
  338.     Path := Open;
  339.     AssignFile(FileInput, Path);
  340.     Reset(FileInput);
  341.     If(IsFileOpen) Then
  342.     Begin
  343.         Str1 := TakeDataFromFile1(IntToStr(Num), FileInput);
  344.         Str2 := TakeDataFromFile2(IntToStr(Num), FileInput);
  345.     End;
  346.     if (Length(Str1) > 0) then
  347.     Begin
  348.         Edit1.Text := Str1;
  349.     End
  350.     Else
  351.         Edit1.Text := #0;
  352.     If (Length(Str2) > 0) then
  353.     Begin
  354.         Edit2.Text := Str2;
  355.     End
  356.     Else
  357.         Edit2.Text := #0;
  358.     CloseFile(FileInput);
  359. end;
  360.  
  361. procedure TForm1.N3Click(Sender: TObject);
  362. Var
  363.     FileOutput: TextFile;
  364. begin
  365.     Path := Open;
  366.     If (IsFileOpen) Then
  367.     Begin
  368.         AssignFile(FileOutput, Path);
  369.         Rewrite(FileOutput);
  370.         Write(FileOutput, Result);
  371.         Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  372.         CloseFile(FileOutput);
  373.         Label3.Caption := '';
  374.         Edit1.Text := '';
  375.         Edit2.Text := '';
  376.     End;
  377. end;
  378.  
  379.  
  380.  
  381.  
  382.  
  383. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement