Advertisement
venik2405

lab5_3

Apr 8th, 2021
466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.88 KB | None | 0 0
  1. unit Input;
  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.ExtCtrls, Vcl.Mask,
  8.   Vcl.Menus, Output;
  9.  
  10. Const
  11.     INT_TYPE = 'Целое число';
  12.     FLOAT_TYPE = 'Действительное число';
  13.  
  14. type
  15.   TInputForm = class(TForm)
  16.     ComboBox1: TComboBox;
  17.     NumberInputLabel: TEdit;
  18.     Bevel1: TBevel;
  19.     OpenDialog: TOpenDialog;
  20.     MainMenu: TMainMenu;
  21.     FileMenu: TMenuItem;
  22.     OpenFile: TMenuItem;
  23.     SaveDialog: TSaveDialog;
  24.     Label1: TLabel;
  25.     CalculateButton: TButton;
  26.     SaveFile: TMenuItem;
  27.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  28.     procedure OpenFileClick(Sender: TObject);
  29.     procedure CalculateButtonClick(Sender: TObject);
  30.     procedure NumberInputLabelChange(Sender: TObject);
  31.     procedure NumberInputLabelKeyPress(Sender: TObject; var Key: Char);
  32.     procedure FileMenuClick(Sender: TObject);
  33.     procedure SaveFileClick(Sender: TObject);
  34.   private
  35.     { Private declarations }
  36.   public
  37.     { Public declarations }
  38.   end;
  39.  
  40. var
  41.   InputForm: TInputForm;
  42.  
  43. implementation
  44.  
  45. {$R *.dfm}
  46.  
  47. Function IsFileExist(Address: String): Boolean; export;
  48. Var
  49.     IsCorrect: Boolean;
  50. Begin
  51.     If FileExists(Address) Then
  52.         IsCorrect := True
  53.     Else
  54.     Begin
  55.         IsCorrect := False;
  56.     End;
  57.     IsFileExist := IsCorrect;
  58. End;
  59.  
  60. procedure TInputForm.CalculateButtonClick(Sender: TObject);
  61. Var
  62.     IsCorrect: Boolean;
  63. begin
  64.     OutputLabel.Show;
  65.     if NumberInputLabel.Text = ',' then
  66.        Outputlabel.FinalLabel.Caption := 'Ошибка ввода'
  67.     else
  68.     Begin
  69.         IsCorrect := false;
  70.         if (Combobox1.Text <> INT_TYPE) And (ComboBox1.Text <> FLOAT_TYPE)  then
  71.         Begin
  72.             Outputlabel.FinalLabel.Caption := 'Выберите тип данных';
  73.             Outputlabel.Width := 400;
  74.         End
  75.     Else
  76.         Begin
  77.             if ComboBox1.Text = INT_TYPE then
  78.                 Try
  79.                     StrToInt(NumberInputLabel.Text);
  80.                     Outputlabel.FinalLabel.Caption := 'Верно';
  81.                     Outputlabel.Width := 300;
  82.                     IsCorrect := True;
  83.                 Except
  84.                     Outputlabel.FinalLabel.Caption := 'Ошибка ввода';
  85.                     Outputlabel.Width := 400;
  86.                 End;
  87.             if ComboBox1.Text = FLOAT_TYPE then
  88.                 Try
  89.                     StrToFloat(NumberInputLabel.Text);
  90.                     Outputlabel.FinalLabel.Caption := 'Верно';
  91.                     IsCorrect := True;
  92.                 Except
  93.                     Outputlabel.FinalLabel.Caption := 'Ошибка ввода';
  94.                 End;
  95.         End;
  96.     End;
  97. end;
  98.  
  99. procedure TInputForm.FileMenuClick(Sender: TObject);
  100. begin
  101.     SaveFile.Enabled := OutputLabel.Showing;
  102. end;
  103.  
  104. procedure TInputForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  105. begin
  106.     CanClose := MessageDlg('Вы уверены, что хотите выйти из программы?' +
  107.     #10#13 + 'Все несохранённые данные будут утеряны.',
  108.     mtConfirmation, [mbYes, mbNo], 0) = mrYes;
  109. end;
  110.  
  111. procedure TInputForm.NumberInputLabelChange(Sender: TObject);
  112. begin
  113.     OutputLabel.Hide;
  114. end;
  115.  
  116. procedure TInputForm.NumberInputLabelKeyPress(Sender: TObject; var Key: Char);
  117. begin
  118.     if not(Key in [#48 .. #57, #8, '.', ',', '-']) then
  119.         Key := #0;
  120.     if Key = '.' then
  121.        key := ',';
  122. end;
  123.  
  124. function CheckFile(Path: String): Boolean;
  125. var
  126.     FileToCheck: TextFile;
  127.     Num: Double;
  128. begin
  129.     AssignFile(FileToCheck, Path);
  130.     Reset(FileToCheck);
  131.     CheckFile := true;
  132.     try
  133.         Readln(FileToCheck, Num);
  134.     except
  135.         CheckFile := false;
  136.     end;
  137.     if ((Num < -9999) or (Num > 9999)) then
  138.         CheckFile := False;
  139.     CloseFile(FileToCheck);
  140. end;
  141.  
  142. procedure TInputForm.OpenFileClick(Sender: TObject);
  143. var
  144.     InputFile: TextFile;
  145.     Num: Double;
  146.     IsCorrect: Boolean;
  147. begin
  148.     IsCorrect := True;
  149.     if OpenDialog.Execute then
  150.     begin
  151.         if IsFileExist(OpenDialog.FileName) then
  152.             if CheckFile(OpenDialog.FileName) then
  153.             begin
  154.                 AssignFile(InputFile, OpenDialog.FileName);
  155.                 Reset(InputFile);
  156.                 Readln(InputFile, Num);
  157.                 NumberInputLabel.Text := FloatToStr(Num);
  158.                 CloseFile(InputFile);
  159.                 ShowMessage('Данные из файла успешно загружены');
  160.             end
  161.             else
  162.             Begin
  163.                 ShowMessage('Данные в файле некорректны.');
  164.                 IsCorrect := False
  165.             End
  166.         else
  167.         Begin
  168.             ShowMessage('Файл не существует.');
  169.             IsCorrect := False
  170.         End;
  171.         if IsCorrect = True then
  172.         Begin
  173.             CalculateButton.Enabled;
  174.             CalculateButton.Click;
  175.         End;
  176.     end;
  177.  
  178. end;
  179.  
  180. procedure TInputForm.SaveFileClick(Sender: TObject);
  181. Var
  182.     OutputFile: TextFile;
  183. begin
  184.     if SaveDialog.Execute() then
  185.     Begin
  186.         if IsFileExist(SaveDialog.FileName) then
  187.         Begin
  188.              AssignFile(OutputFile, SaveDialog.FileName);
  189.              Rewrite(OutputFile);
  190.              Write(OutputFile, 'Тип данных: ');
  191.              Writeln(OutputFile, ComboBox1.Text);
  192.              Write(OutputFile, 'Число: ');
  193.              Writeln(OutputFile, NumberInputLabel.Text);
  194.              Write(OutputFile, 'Вывод: ');
  195.              Writeln(OutputFile, OutputLabel.FinalLabel.Caption);
  196.              CloseFile(OutputFile);
  197.              ShowMessage('Успешно сохранено');
  198.         End
  199.         else
  200.             ShowMessage('Файл не существует.')
  201.     End;
  202. end;
  203.  
  204. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement