Advertisement
Vladislav8653

third form

Feb 7th, 2023 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 8.73 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.Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Label1: TLabel;
  12.     Label2: TLabel;
  13.     Edit2: TEdit;
  14.     Label3: TLabel;
  15.     Label4: TLabel;
  16.     Edit1: TEdit;
  17.     Button1: TButton;
  18.     Label7: TLabel;
  19.     Label8: TLabel;
  20.     MainMenu1: TMainMenu;
  21.     PopupMenu1: TPopupMenu;
  22.     N1: TMenuItem;
  23.     N2: TMenuItem;
  24.     N3: TMenuItem;
  25.     N4: TMenuItem;
  26.     N5: TMenuItem;
  27.     OpenDialog1: TOpenDialog;
  28.     SaveDialog1: TSaveDialog;
  29.     procedure Edit1Change(Sender: TObject);
  30.     procedure Button1Click(Sender: TObject);
  31.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  32.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);
  33.     procedure N4Click(Sender: TObject);
  34.     procedure N5Click(Sender: TObject);
  35.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  36.     procedure N2Click(Sender: TObject);
  37.     procedure N3Click(Sender: TObject);
  38.     procedure Edit2Change(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 : Boolean;
  49.  
  50. implementation
  51.  
  52. {$R *.dfm}
  53.  
  54.  
  55.  
  56. procedure TForm1.Button1Click(Sender: TObject);
  57. var
  58.     N : Integer;
  59.     Eps, X, Y0, Y: Real;
  60. begin
  61.     Try
  62.         X := StrToFloat(Edit1.Text);
  63.     Except
  64.         Application.MessageBox('Что-то не так', 'Ашыпка', 0);
  65.         Edit1.Text := '';
  66.     End;
  67.     Try
  68.         Eps := StrToFloat(Edit2.Text);
  69.     Except
  70.         Application.MessageBox('Что-то не так', 'Ашыпка', 0);
  71.         Edit2.Text := '';
  72.     End;
  73.     Y0 := 1;
  74.     N := 0;
  75.     Repeat
  76.         Y := Y0;
  77.         Y0 := 0.5 * (Y + X / Y);
  78.         Inc(N);
  79.     Until (abs(Y - Y0) <= Eps);
  80.     Label7.Caption := (FormatFloat('0.00000000',Y0));
  81.     Label8.Caption := IntToStr(N);
  82.     N3.Enabled := True;
  83.     Result := 'Y = ' + Label7.Caption + ' and ' +'N = ' + Label8.Caption;
  84. end;
  85.  
  86. procedure TForm1.Edit1Change(Sender: TObject);
  87. begin
  88.     N3.Enabled := False;
  89.     If (Length(Edit1.Text) = 0) or (Length(Edit2.Text) = 0) then
  90.         Button1.Enabled := False
  91.     else
  92.         Button1.Enabled := True;
  93.     Label7.Caption := '';
  94.     Label8.Caption := '';
  95. end;
  96.  
  97. procedure TForm1.Edit2Change(Sender: TObject);
  98. begin
  99.     If (Length(Edit1.Text) = 0) or (Length(Edit2.Text) = 0) then
  100.         Button1.Enabled := False
  101.     else
  102.         Button1.Enabled := True;
  103.     If (Length(Edit2.Text) <> 0) then
  104.         If (StrToFloat(Edit2.Text) = 0) or (Edit2.Text = '0,') or (Length(Edit1.Text) = 0) then
  105.             Button1.Enabled := False
  106.         else
  107.             Button1.Enabled := True;
  108.     Label7.Caption := '';
  109.     Label8.Caption := '';
  110.  
  111. end;
  112.  
  113. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  114. var
  115.     N : Integer;
  116. begin
  117.     If ((Key = #13) And (Button1.Enabled)) Then
  118.         Button1.Click;
  119.     If (Not(Key In ['0'..'9', #08, #46,','])) Then
  120.         Key := #0;
  121.     If (Length(Edit1.Text) = 8) Then
  122.         If (Not(Key In [#08, #46])) Then
  123.             Key := #0;
  124.     if (Length(Edit1.Text) = 0) then
  125.         If (Not(Key In ['0'..'9', #08, #46])) Then
  126.             Key := #0;
  127.     N := Ansipos(',', Edit1.Text);
  128.     If (Key = ',') and (N <> 0) then
  129.         If (Not(Key In ['0'..'9', #08, #46])) Then
  130.             Key := #0;
  131.     If (Edit1.Text = '0') and Not(Key in [',', #08, #46]) then
  132.         Key := #0;
  133.     If Key = '.' then
  134.         Key := #0;
  135. end;
  136.  
  137. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
  138. var
  139.     N : Integer;
  140. begin
  141.     If ((Key = #13) And (Button1.Enabled)) Then
  142.         Button1.Click;
  143.     If (Not(Key In ['0'..'9', #08, #46, ','])) Then
  144.         Key := #0;
  145.     If (Length(Edit2.Text) = 8) Then
  146.         If (Not(Key In [#08, #46])) Then
  147.             Key := #0;
  148.     if (Length(Edit2.Text) = 0) then
  149.         If (Not(Key In ['0'..'9', #08, #46])) Then
  150.             Key := #0;
  151.     N := Ansipos(',', Edit2.Text);
  152.     If (Key = ',') and (n <> 0) then
  153.         If (Not(Key In ['0'..'9', #08, #46])) Then
  154.             Key := #0;
  155.     If (Edit2.Text = '0') and Not(Key in [',', #08, #46]) then
  156.         Key := #0;
  157.     If Key = '.' then
  158.         Key := #0;
  159. end;
  160.  
  161. procedure TForm1.N4Click(Sender: TObject);
  162. begin
  163.       Application.MessageBox('Программа вычисляет значение квадратного корня с точностью, вводимой пользователем. Также подсчитывает количество итераций, за которое достигается эта точность.', 'Инструкция', 0);
  164. end;
  165.  
  166. procedure TForm1.N5Click(Sender: TObject);
  167. begin
  168.      Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  169. end;
  170.  
  171. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  172. begin
  173.     CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  174. end;
  175.  
  176.  
  177.  
  178.  
  179. Function CheckFileData1(Num: String): Boolean;
  180. Const
  181.     MAX_LIM = 99999999;
  182.     MIN_LIM = 0;
  183. Var
  184.     NewNum: Real;
  185.     IsCorrect: Boolean;
  186. Begin
  187.     NewNum := 0;
  188.     IsCorrect := True;
  189.     Try
  190.         NewNum := StrToFloat(Num);
  191.     Except
  192.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  193.         IsCorrect := False;
  194.     End;
  195.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
  196.     Begin
  197.         Num := FloatToStr(NewNum);
  198.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  199.         IsCorrect := False;
  200.     End;
  201.     CheckFileData1 := IsCorrect;
  202. End;
  203.  
  204. Function CheckFileData2(Num: String): Boolean;
  205. Const
  206.     MAX_LIM = 99999999;
  207.     MIN_LIM = 0;
  208. Var
  209.     NewNum: Real;
  210.     IsCorrect: Boolean;
  211. Begin
  212.     NewNum := 0;
  213.     IsCorrect := True;
  214.     Try
  215.         NewNum := StrToFloat(Num);
  216.     Except
  217.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  218.         IsCorrect := False;
  219.     End;
  220.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum <= MIN_LIM))) Then
  221.     Begin
  222.         Num := FloatToStr(NewNum);
  223.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  224.         IsCorrect := False;
  225.     End;
  226.     CheckFileData2 := IsCorrect;
  227. End;
  228.  
  229.  
  230. Function Open (): String;
  231. Begin
  232.     With Form1 Do
  233.     Begin
  234.         If OpenDialog1.Execute Then
  235.         Begin
  236.             Path := OpenDialog1.FileName;
  237.             IsFileOpen := True;
  238.         End
  239.         Else
  240.             IsFileOpen := False;
  241.     End;
  242.     Open := Path;
  243. End;
  244.  
  245. Function TakeDataFromFile1(Number1: String; Var FileOutput: TextFile): String;
  246. Var
  247.     IsRight: Boolean;
  248. Begin
  249.     IsRight := True;
  250.     Try
  251.         Readln(FileOutput, Number1);
  252.         IsRight := CheckFileData1(Number1);
  253.     Except
  254.     End;
  255.     If(Not(IsRight)) Then
  256.         TakeDataFromFile1 := ''
  257.     Else
  258.         TakeDataFromFile1 := Number1;
  259. End;
  260.  
  261. Function TakeDataFromFile2(Number2: String; Var FileOutput: TextFile): String;
  262. Var
  263.     IsRight : Boolean;
  264. Begin
  265.     IsRight := True;
  266.     Try
  267.         Read(FileOutput, Number2);
  268.         IsRight := CheckFileData2(Number2);
  269.     Except
  270.     End;
  271.     If(Not(IsRight)) Then
  272.         TakeDataFromFile2 := ''
  273.     Else
  274.         TakeDataFromFile2 := Number2;
  275. End;
  276.  
  277.  
  278. procedure TForm1.N2Click(Sender: TObject);
  279. Var
  280.     FileInput: TextFile;
  281.     Num : Integer;
  282.     Str1, Str2 : String;
  283. begin
  284.     Num := 0;
  285.     Path := Open;
  286.     AssignFile(FileInput, Path);
  287.     Reset(FileInput);
  288.     If(IsFileOpen) Then
  289.     Begin
  290.         Str1 := TakeDataFromFile1(IntToStr(Num), FileInput);
  291.         if Str1 <> '' then
  292.             Str2 := TakeDataFromFile2(IntToStr(Num), FileInput);
  293.     End;
  294.     if Not((Str1 = '') or (Str2 = '')) then
  295.     Begin
  296.         Edit1.Text := Str1;
  297.         Edit2.Text := Str2;
  298.     End
  299.     Else
  300.     Begin
  301.         Edit1.Text := #0;
  302.         Edit2.Text := #0;
  303.     End;
  304.     CloseFile(FileInput);
  305. end;
  306.  
  307. procedure TForm1.N3Click(Sender: TObject);
  308. Var
  309.     FileOutput: TextFile;
  310. begin
  311.     Path := Open;
  312.     If (IsFileOpen) Then
  313.     Begin
  314.         AssignFile(FileOutput, Path);
  315.         Rewrite(FileOutput);
  316.         Write(FileOutput, Result);
  317.         Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  318.         CloseFile(FileOutput);
  319.         Label7.Caption := '';
  320.         Label8.Caption := '';
  321.         Edit1.Text := '';
  322.         Edit2.Text := '';
  323.     End;
  324. end;
  325.  
  326. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement