Advertisement
venik2405

LabForm1_3

Feb 4th, 2021
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.20 KB | None | 0 0
  1. unit LabForm1_3;
  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.   TMainForm = class(TForm)
  11.     InputNumber: TEdit;
  12.     SaveDialog: TSaveDialog;
  13.     OpenDialog: TOpenDialog;
  14.     MainMenu: TMainMenu;
  15.     FileMenu: TMenuItem;
  16.     OpenFile: TMenuItem;
  17.     SaveInFile: TMenuItem;
  18.     CalculateButton: TButton;
  19.     Label1: TLabel;
  20.     Label2: TLabel;
  21.     OutputLabel: TLabel;
  22.     Procedure FindAmount(Number: Double);
  23.     procedure FileMenuClick(Sender: TObject);
  24.     procedure CalculateButtonClick(Sender: TObject);
  25.     procedure OpenFileClick(Sender: TObject);
  26.     procedure SaveInFileClick(Sender: TObject);
  27.     procedure InputChange(Sender: TObject);
  28.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  29.   private
  30.     { Private declarations }
  31.   public
  32.     { Public declarations }
  33.   end;
  34.  
  35. var
  36.   MainForm: TMainForm;
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41.  
  42. Procedure TMainForm.FindAmount(Number: Double);
  43. Var
  44.     ColOfNumber, I: Integer;
  45. Begin
  46.     If Number = 0 then
  47.         ColOfNumber := 1;
  48.     While (Number >= 1) do
  49.     Begin
  50.         Number := Number / 10;
  51.         ColOfNumber := ColOfNumber + 1;
  52.     End;
  53.     Outputlabel.Caption := 'Количество цифр: ' + IntToStr(ColOfNumber);
  54. End;
  55.  
  56. procedure TMainForm.InputChange(Sender: TObject);
  57. begin
  58.     OutputLabel.Caption := '';
  59.     MainForm.Height := MainForm.Height - 30;
  60. end;
  61.  
  62. procedure TMainForm.CalculateButtonClick(Sender: TObject);
  63. Var
  64.     IsCorrect: Boolean;
  65. begin
  66.     IsCorrect := True;
  67.     if (IsCorrect = true) then
  68.     Begin
  69.         Try
  70.             FindAmount(StrToInt(InputNumber.Text));
  71.             MainForm.Height := MainForm.Height + 30;
  72.         Except
  73.             MessageDlg('Введите натуральное число', mtError, [mbOk], 0);
  74.         End;
  75.     End;
  76. end;
  77.  
  78. function CheckFile(Path: String): Boolean;
  79. var
  80.     FileToCheck: TextFile;
  81.     N: Integer;
  82. begin
  83.     AssignFile(FileToCheck, Path);
  84.     Reset(FileToCheck);
  85.     CheckFile := true;
  86.     try
  87.         Readln(FileToCheck, N);
  88.     except
  89.         CheckFile := false;
  90.     end;
  91.     CloseFile(FileToCheck);
  92. end;
  93.  
  94. procedure TMainForm.OpenFileClick(Sender: TObject);
  95. var
  96.     InputFile: TextFile;
  97.     N: Integer;
  98.     IsCorrect: Boolean;
  99. begin
  100.     if OpenDialog.Execute then
  101.     begin
  102.         IsCorrect := true;
  103.         if CheckFile(OpenDialog.FileName) then
  104.         begin
  105.             AssignFile(InputFile, OpenDialog.FileName);
  106.             Reset(InputFile);
  107.             Read(InputFile, N);
  108.             InputNumber.Text := IntToStr(N);
  109.             CloseFile(InputFile);
  110.             ShowMessage('Данные из файла успешно загружены');
  111.         end
  112.         else
  113.         Begin
  114.             ShowMessage('Данные в файле некорректны');
  115.             IsCorrect := false;
  116.         End;
  117.         if (IsCorrect = true) then
  118.         Begin
  119.             MainForm.Height := MainForm.Height + 30;
  120.             Try
  121.                 FindAmount(StrToInt(InputNumber.Text));
  122.             Except
  123.                 MessageDlg('Введите натуральное число', mtError, [mbOk], 0);
  124.             End;
  125.         End;
  126.     end;
  127. end;
  128.  
  129. procedure TMainForm.SaveInFileClick(Sender: TObject);
  130. var
  131.     OutputFile: TextFile;
  132. begin
  133.     if SaveDialog.Execute then
  134.     begin
  135.         AssignFile(OutputFile, SaveDialog.FileName);
  136.         Rewrite(OutputFile);
  137.         writeln(OutputFile, 'Число : ' + InputNumber.Text);
  138.         Write(OutputFile, MainForm.OutputLabel.Caption);
  139.         CloseFile(OutputFile);
  140.         ShowMessage('Успешно сохранено');
  141.     end;
  142. end;
  143.  
  144. procedure TMainForm.FileMenuClick(Sender: TObject);
  145. begin
  146.     SaveInFile.Enabled := Not (OutputLabel.Caption = '');
  147. end;
  148.  
  149. procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  150. begin
  151.     CanClose := MessageDlg('Вы уверены, что хотите выйти из программы?' +
  152.         #10#13 + 'Все несохранённые данные будут утеряны.',
  153.         mtConfirmation, [mbYes, mbNo], 0) = mrYes;
  154. end;
  155.  
  156. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement