Advertisement
Vladislav8653

second form

Jan 21st, 2023 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 6.40 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.     Button1: TButton;
  14.     Label3: TLabel;
  15.     Edit1: TEdit;
  16.     MainMenu1: TMainMenu;
  17.     PopupMenu1: TPopupMenu;
  18.     SaveDialog1: TSaveDialog;
  19.     OpenDialog1: TOpenDialog;
  20.     dd1: TMenuItem;
  21.     N1: TMenuItem;
  22.     N2: TMenuItem;
  23.     N3: TMenuItem;
  24.     N4: TMenuItem;
  25.     procedure Button1Click(Sender: TObject);
  26.     procedure Edit1Change(Sender: TObject);
  27.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  28.     procedure N1Click(Sender: TObject);
  29.     procedure N2Click(Sender: TObject);
  30.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  31.     procedure N3Click(Sender: TObject);
  32.     procedure N4Click(Sender: TObject);
  33.   private
  34.     { Private declarations }
  35.   public
  36.     { Public declarations }
  37.   end;
  38.  
  39. var
  40.   Form1: TForm1;
  41.   Path, Result : String;
  42.   IsFileOpen : Boolean;
  43.  
  44. implementation
  45.  
  46. {$R *.dfm}
  47.  
  48. procedure TForm1.Button1Click(Sender: TObject);
  49. Var
  50.     Degree, I, Number, TempResult : Integer;
  51. Const
  52.     Step = 6;
  53.     Label2Start = 101;
  54.     Label3Start = 114;
  55. begin
  56.     Degree := StrToInt(Edit1.Text);
  57.     Number := 1;
  58.     For I := 1 to Degree do
  59.         Number := Number * 2;
  60.     // этот кусочек отвечает за сдвиг пропорционально кол-ву цифр в результате
  61.     Label3.Left := Label3Start;
  62.     Label2.Left := Label2Start;
  63.     TempResult := Number;
  64.     While ((TempResult div 10) > 0) do
  65.     Begin
  66.         Label3.Left := Label3.Left - Step;
  67.         Label2.Left := Label2.Left - Step;
  68.         TempResult := TempResult div 10;
  69.     End;
  70.  
  71.     Label2.Caption := '2 ' + ' = ' + IntToStr(Number);
  72.     Label3.Caption := IntToStr(Degree);
  73.     Result := '2 в степени ' + IntToStr(Degree) + ' равно ' + IntToStr(Number);
  74.     N4.Enabled := True;
  75. end;
  76.  
  77. procedure TForm1.Edit1Change(Sender: TObject);
  78. begin
  79.     N4.Enabled := False;
  80.     If ((Length(Edit1.Text) = 0)) then
  81.     Begin
  82.         Button1.Enabled := False;
  83.     End
  84.     Else
  85.     Begin
  86.         Button1.Enabled := True;
  87.     End;
  88.     Label2.Caption := '';
  89.     Label3.Caption := '';
  90. end;
  91.  
  92. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  93. begin
  94.     If ((Key = #13) And (Button1.Enabled)) Then
  95.         Button1.Click;
  96.     If (Not(Key In ['0'..'9', #08, #46])) Then
  97.         Key := #0;
  98.     If ((Length(Edit1.Text) = 0) and (Key = '0')) Then
  99.         Key := #0;
  100.     If ((Key = #08) or (Key = #46)) then
  101.     Begin
  102.         Label3.Caption := '';
  103.         Label2.Caption := '';
  104.     End;
  105.  
  106.     If ((Length(Edit1.Text) = 1) and (StrToInt(Edit1.Text) = 3)) then
  107.         If Not(Key In [#08, #46, '0']) Then
  108.             Key := #0;
  109.     If ((Length(Edit1.Text) = 2)) then
  110.         If Not(Key In [#08, #46]) Then
  111.             Key := #0;
  112.     If (Length(Edit1.Text) = 1) and Not((StrToInt(Edit1.Text) = 2) or (StrToInt(Edit1.Text) = 1)) then
  113.     Begin
  114.         If (StrToInt(Edit1.Text) = 3) then
  115.             If Not(Key In [#08, #46, '0']) Then
  116.                 Key := #0;
  117.         If Not(Key In [#08, #46]) and Not(StrToInt(Edit1.Text) = 3)  Then
  118.             Key := #0;
  119.     End;
  120. end;
  121.  
  122.  
  123. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  124. begin
  125.     CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  126. end;
  127.  
  128. procedure TForm1.N1Click(Sender: TObject);
  129. begin
  130.     Application.MessageBox('Программа вычисляет 2 в степени n, где n - натуральное число.'#13#10'Это лабораторная 1.2 (в название формы не поместилось)'#13#10'Внимание! Степень числа должна быть не более 30.', 'Инструкция', 0);
  131. end;
  132.  
  133. procedure TForm1.N2Click(Sender: TObject);
  134. begin
  135.     Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  136. end;
  137.  
  138. Function CheckFileData(Num: String): Boolean;
  139. Const
  140.     MAX_LIM = 30;
  141.     MIN_LIM = 1;
  142. Var
  143.     NewNum: Integer;
  144.     IsCorrect: Boolean;
  145. Begin
  146.     NewNum := 0;
  147.     IsCorrect := True;
  148.     Try
  149.         NewNum := StrToInt(Num);
  150.     Except
  151.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  152.         IsCorrect := False;
  153.     End;
  154.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
  155.     Begin
  156.         Num := IntToStr(NewNum);
  157.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  158.         IsCorrect := False;
  159.     End;
  160.     CheckFileData := IsCorrect;
  161. End;
  162.  
  163. Function Open (): String;
  164. Begin
  165.     With Form1 Do
  166.     Begin
  167.         If OpenDialog1.Execute Then
  168.         Begin
  169.             Path := OpenDialog1.FileName;
  170.             IsFileOpen := True;
  171.         End
  172.         Else
  173.             IsFileOpen := False;
  174.     End;
  175.     Open := Path;
  176. End;
  177.  
  178. Function TakeDataFromFile(Side: String; Var FileOutput: TextFile): String;
  179. Var
  180.     IsRight : Boolean;
  181. Begin
  182.     IsRight := True;
  183.     Try
  184.         Read(FileOutput, Side);
  185.         IsRight := CheckFileData(Side);
  186.     Except
  187.     End;
  188.     If(Not(IsRight)) Then
  189.         TakeDataFromFile := ''
  190.     Else
  191.         TakeDataFromFile := Side;
  192. End;
  193.  
  194. procedure TForm1.N3Click(Sender: TObject);
  195. Var
  196.     FileInput: TextFile;
  197.     Num : Integer;
  198.     Str : String;
  199. begin
  200.     Num := 0;
  201.     Path := Open;
  202.     AssignFile(FileInput, Path);
  203.     Reset(FileInput);
  204.     If(IsFileOpen) Then
  205.         Str := TakeDataFromFile(IntToStr(Num), FileInput);
  206.     if (Length(Str) > 0) then
  207.     Begin
  208.         Edit1.Text := Str;
  209.     End
  210.     Else
  211.         Edit1.Text := #0;
  212.     CloseFile(FileInput);
  213. end;
  214.  
  215. procedure TForm1.N4Click(Sender: TObject);
  216. Var
  217.     FileOutput: TextFile;
  218. begin
  219.     Path := Open;
  220.     If (IsFileOpen) Then
  221.     Begin
  222.         AssignFile(FileOutput, Path);
  223.         Rewrite(FileOutput);
  224.         Write(FileOutput, Result);
  225.         Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  226.         CloseFile(FileOutput);
  227.         Label3.Caption := '';
  228.         Label2.Caption := '';
  229.         Edit1.Text := '';
  230.     End;
  231. end;
  232.  
  233. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement