Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus;
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Edit1: TEdit;
- Label2: TLabel;
- Button1: TButton;
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- N3: TMenuItem;
- Label3: TLabel;
- PopupMenu1: TPopupMenu;
- OpenDialog1: TOpenDialog;
- SaveDialog1: TSaveDialog;
- N4: TMenuItem;
- N5: TMenuItem;
- procedure Button1Click(Sender: TObject);
- procedure Edit1KeyPress(Sender: TObject; var Key: Char);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure N3Click(Sender: TObject);
- procedure Edit1Change(Sender: TObject);
- procedure N2Click(Sender: TObject);
- procedure N4Click(Sender: TObject);
- procedure N5Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- N, K : Integer;
- IsFileOpen : Boolean;
- Path, Result : String;
- implementation
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- Var
- Age, Diff : Integer;
- Str : String;
- Const
- BORDER_AGE = 18;
- REAL_OLD = 116;
- Begin
- Age := StrToInt(Edit1.Text);
- If (Age > REAL_OLD) then
- Begin
- MessageBox(Form1.Handle, PChar('116 лет - максимальная официально зарегистрированная продолжительность жизни человека. Введите Ваш реальный возраст.'), 'Ошибка', MB_ICONSTOP);
- Edit1.Clear;
- Label2.Caption := '';
- Label3.Caption := '';
- End
- Else
- Begin
- If (Age < BORDER_AGE) then
- Begin
- Diff := BORDER_AGE - Age;
- Str := 'Вам будет предоставлено право голосовать через ';
- Str := ConCat(Str, IntToStr(Diff));
- If Diff > 4 then
- Str := ConCat(Str, ' лет')
- Else If Diff = 1 then
- Str := ConCat(Str, ' год')
- Else
- Str := ConCat(Str, ' года');
- Label2.Caption := Str;
- Label3.Caption := '';
- Result := Label2.Caption
- End
- Else
- Begin
- Label3.Caption := 'Вы имеете право голосовать!';
- Label2.Caption := '';
- Result := Label3.Caption;
- End;
- End;
- N4.Enabled := True;
- end;
- procedure TForm1.Edit1Change(Sender: TObject);
- begin
- N4.Enabled := False;
- If ((Length(Edit1.Text) = 0)) then
- Button1.Enabled := False
- Else
- Button1.Enabled := True;
- Label2.Caption := '';
- Label3.Caption := '';
- end;
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
- begin
- If ((Key = #13) And (Button1.Enabled)) Then
- Button1.Click; //enter теперь нажимает кнопку
- If (Not(Key In ['0'..'9', #08, #46])) Then
- Key := #0; // можно только backspace, delete и 0..9
- If ((Length(Edit1.Text) = 0) and (Key = '0')) Then
- Key := #0; // первая цифра как нуль - нельзя
- If ((Key = #08) or (Key = #46)) then
- Begin
- Label3.Caption := '';
- Label2.Caption := ''; // если стираем что-то, то label очищаются
- End;
- If ((Length(Edit1.Text) = 2) and (StrToInt(Edit1.Text) <> 10)) then
- If (Not(Key In ['0'..'6', #08, #46])) Then
- Key := #0;
- // если длина текста в едит равна 2 и не равна 10, а значит равна 11
- // т.к. более 11 покрывает уже другое условие
- // то можно ввести только 1..6 (прим: 115, 116)
- If ((Length(Edit1.Text) = 2) and (StrToInt(Edit1.Text) > 11)) then
- If Not(Key in [#08, #46]) then
- Key := #0;
- //если 12 и больше, то больше ничего нельзя вводить
- end;
- procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- begin
- CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
- end;
- procedure TForm1.N2Click(Sender: TObject);
- begin
- Application.MessageBox('Программа запрашивает возраст пользователя.'#13#10'Если ему не менее 18, сообщает о том, что он имеет право голосовать.'#13#10'В противном случае вычисляет, через сколько лет пользователю будет предоставлено это право.'#13#10''#13#10' Введите число от 1 до 116. ', 'Инструкция', 0);
- end;
- Function CheckFileData(Num: String): Boolean;
- Const
- MAX_LIM = 116;
- MIN_LIM = 1;
- Var
- NewNum: Integer;
- IsCorrect: Boolean;
- Begin
- NewNum := 0;
- IsCorrect := True;
- Try
- NewNum := StrToInt(Num);
- Except
- MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
- Begin
- Num := IntToStr(NewNum);
- MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- CheckFileData := IsCorrect;
- End;
- Function Open () : String;
- Begin
- With Form1 Do
- Begin
- If OpenDialog1.Execute Then
- Begin
- Path := OpenDialog1.FileName;
- IsFileOpen := True;
- End
- Else
- IsFileOpen := False;
- End;
- Open := Path;
- End;
- Function TakeDataFromFile(Side: String; Var FileOutput: TextFile): String;
- Var
- IsRight : Boolean;
- Begin
- IsRight := True;
- Try
- Read(FileOutput, Side);
- IsRight := CheckFileData(Side);
- Except
- End;
- If(Not(IsRight)) Then
- TakeDataFromFile := ''
- Else
- TakeDataFromFile := Side;
- End;
- procedure TForm1.N3Click(Sender: TObject);
- Var
- FileInput: TextFile;
- Num : Integer;
- Str : String;
- begin
- Num := 0;
- Path := Open;
- AssignFile(FileInput, Path);
- Reset(FileInput);
- If(IsFileOpen) Then
- Str := TakeDataFromFile(IntToStr(Num), FileInput);
- if (Length(Str) > 0) then
- Begin
- Edit1.Text := Str;
- End
- Else
- Edit1.Text := #0;
- CloseFile(FileInput);
- end;
- procedure TForm1.N4Click(Sender: TObject);
- Var
- FileOutput: TextFile;
- IsCorrect : Boolean;
- begin
- IsCorrect := True;
- Path := Open;
- If (IsFileOpen) Then
- Begin
- try
- AssignFile(FileOutput, Path);
- Rewrite(FileOutput);
- Write(FileOutput, Result);
- except
- IsCorrect := False;
- Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
- end;
- if IsCorrect then
- Begin
- Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
- CloseFile(FileOutput);
- Label3.Caption := '';
- Label2.Caption := '';
- Edit1.Text := '';
- End;
- End;
- end;
- procedure TForm1.N5Click(Sender: TObject);
- begin
- Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement