Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unit Main;
- Interface
- Uses
- Winapi.Windows,
- Winapi.Messages,
- System.SysUtils,
- System.Variants,
- System.Classes,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.StdCtrls,
- Vcl.Menus,
- Vcl.ExtCtrls,
- Vcl.Imaging.Pngimage,
- System.Actions,
- Vcl.ActnList;
- Type
- TMainForm = Class(TForm)
- Button1: TButton;
- EditKoefX: TEdit;
- EditKoefY: TEdit;
- MainMenu1: TMainMenu;
- FileTab: TMenuItem;
- InstructionTab: TMenuItem;
- OpenOption: TMenuItem;
- SaveOption: TMenuItem;
- DeveloperTab: TMenuItem;
- BalloonHint1: TBalloonHint;
- OpenDialog1: TOpenDialog;
- SaveDialog1: TSaveDialog;
- MemoRes: TMemo;
- ActionList1: TActionList;
- Action1: TAction;
- Label1: TLabel;
- Label2: TLabel;
- Image1: TImage;
- Procedure Button1Click(Sender: TObject);
- Procedure InstructionTabClick(Sender: TObject);
- Procedure DeveloperTabClick(Sender: TObject);
- Procedure EditKoefYKeyPress(Sender: TObject; Var Key: Char);
- Procedure EditKoefXKeyPress(Sender: TObject; Var Key: Char);
- Procedure OpenOptionClick(Sender: TObject);
- Procedure GetPath(Var Path: String);
- Procedure SaveOptionClick(Sender: TObject);
- Procedure Checker(Var IsCorrect: Boolean);
- Procedure FileTabClick(Sender: TObject);
- Procedure EditKoefXChange(Sender: TObject);
- Procedure EditKoefYChange(Sender: TObject);
- Procedure Action1Update(Sender: TObject);
- Private
- { Private declarations }
- Public
- { Public declarations }
- End;
- Const
- E: Double = 1.0E-3;
- NumSet = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', #8, #44, #45, #46];
- Var
- MainForm: TMainForm;
- KoefX, KoefY: Real;
- Implementation
- {$R *.dfm}
- Uses
- Instruction,
- Information;
- Procedure TMainForm.Checker(Var IsCorrect: Boolean); //проверка на преогбразования в числа
- Begin
- IsCorrect := True;
- Try
- StrtoFloat(EditKoefX.Text);
- Except
- IsCorrect := False;
- End;
- Try
- StrtoFloat(EditKoefY.Text);
- Except
- IsCorrect := False;
- End;
- End;
- Procedure TMainForm.Action1Update(Sender: TObject); //обновление Action1 если оба поля заполнены
- Begin
- TAction(Sender).Enabled := (EditKoefX.Text <> '') And (EditKoefY.Text <> '')
- End;
- Procedure TMainForm.Button1Click(Sender: TObject); //при нажатии на Button1
- Var
- IsCorrect: Boolean;
- Begin
- Checker(IsCorrect);
- If IsCorrect Then
- Begin
- KoefX := StrtoInt(EditKoefX.Text);
- KoefY := StrtoInt(EditKoefY.Text);
- If (KoefY + 1 > 0) And (KoefX + 1 > 0) And (KoefY - 1 < (2 - KoefX) / 2) Then
- Begin
- MemoRes.Lines.Add('успешно прошло');
- End
- Else
- Begin
- MemoRes.Lines.Add('не прошло');
- End;
- End;
- End;
- Procedure TMainForm.EditKoefYChange(Sender: TObject);
- Begin //когда меняешь игрик, если пустой игрик то очищается MemoRes
- If Length(EditKoefY.Text) = 0 Then
- Begin
- MemoRes.Lines.Clear;
- End;
- End;
- //при изменении игрика (проверки)
- Procedure TMainForm.EditKoefYKeyPress(Sender: TObject; Var Key: Char);
- Begin
- If Key In NumSet Then
- Begin
- If Key = '0' Then
- Begin
- If Length(EditKoefY.Text) = 1 Then
- Begin
- If EditKoefY.Text[1] In ['0'] Then
- Begin
- Key := #0;
- End;
- End;
- If Length(EditKoefY.Text) = 2 Then
- Begin
- If (EditKoefY.Text[1] = '-') AND (EditKoefY.Text[2] = '0') Then
- Begin
- Key := #0;
- End;
- End;
- End;
- If Key = #45 Then
- Begin
- If Length(EditKoefY.Text) > 0 Then
- Begin
- BalloonHint1.Title := 'непонятный символ.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefY);
- Key := #0;
- End;
- End;
- If Key In [',', '.'] Then
- Begin
- Key := FormatSettings.DecimalSeparator;
- If Pos(Key, EditKoefY.Text) <> 0 Then
- Begin
- BalloonHint1.Title := 'непонятный символ.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefY);
- Key := #0;
- End
- Else
- If Length(EditKoefY.Text) > 0 Then
- Begin
- If (EditKoefY.Text[1] = '-') AND (Length(EditKoefY.Text) = 1) Then
- Begin
- Key := #0;
- End
- End
- Else
- If EditKoefY.SelStart = 0 Then
- Begin
- EditKoefY.Text := '0' + EditKoefY.Text;
- EditKoefY.SelStart := 1;
- End;
- End;
- End
- Else
- Begin
- BalloonHint1.Title := 'непонятный символ.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefY);
- Key := #0;
- End;
- End;
- Procedure TMainForm.EditKoefXChange(Sender: TObject);
- Begin
- If Length(EditKoefX.Text) = 0 Then
- Begin
- MemoRes.Lines.Clear;
- End;
- End;
- Procedure TMainForm.EditKoefXKeyPress(Sender: TObject; Var Key: Char);
- Begin
- If Key In NumSet Then
- Begin
- If Key = '0' Then
- Begin
- If Length(EditKoefX.Text) = 1 Then
- Begin
- If EditKoefX.Text[1] In ['0'] Then
- Begin
- Key := #0;
- End;
- End;
- If Length(EditKoefX.Text) = 2 Then
- Begin
- If (EditKoefX.Text[1] = '-') AND (EditKoefX.Text[2] = '0') Then
- Begin
- Key := #0;
- End;
- End;
- End;
- If Key = #45 Then
- Begin
- If Length(EditKoefX.Text) > 0 Then
- Begin
- BalloonHint1.Title := 'непонятный символ.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefX);
- Key := #0;
- End;
- End;
- If Key In [',', '.'] Then
- Begin
- Key := FormatSettings.DecimalSeparator;
- If Pos(Key, EditKoefX.Text) <> 0 Then
- Begin
- BalloonHint1.Title := 'непонятный символ.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefX);
- Key := #0;
- End
- Else
- If Length(EditKoefX.Text) > 0 Then
- Begin
- If (EditKoefX.Text[1] = '-') AND (Length(EditKoefX.Text) = 1) Then
- Begin
- Key := #0;
- End
- End
- Else
- If EditKoefX.SelStart = 0 Then
- Begin
- EditKoefX.Text := '0' + EditKoefX.Text;
- EditKoefX.SelStart := 1;
- End;
- End;
- End
- Else
- Begin
- BalloonHint1.Title := 'Íåäîïóñòèìûé ñèìâîë.';
- BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
- BalloonHint1.ImageIndex := 1;
- BalloonHint1.ShowHint(EditKoefX);
- Key := #0;
- End;
- End;
- Procedure TMainForm.FileTabClick(Sender: TObject);
- Begin
- If MemoRes.Lines.Count = 0 Then
- Begin
- SaveOption.Enabled := False;
- End
- Else
- Begin
- SaveOption.Enabled := True;
- End;
- End;
- Procedure TMainForm.InstructionTabClick(Sender: TObject);
- Begin
- InstructionForm.ShowModal; //инструкция
- End;
- Procedure TMainForm.GetPath(Var Path: String);
- Begin //принимает переменную по ссылке для получения пути к файлу
- If OpenDialog1.Execute Then
- Begin
- Path := OpenDialog1.FileName;
- End
- Else
- Begin
- ShowMessage('Файл успешно закрыт.');
- End;
- End;
- Procedure TMainForm.OpenOptionClick(Sender: TObject);
- Var //открытие файла и чтение данных
- IsCorrect: Boolean;
- Path, Errors, Stor, Rad: String;
- FileElem: TextFile;
- Begin
- GetPath(Path);
- AssignFile(FileElem, Path);
- IsCorrect := True;
- Try
- Try
- Reset(FileElem);
- Except
- CloseFile(FileElem);
- IsCorrect := False;
- ShowMessage('Ошибка при открытии файла.');
- End;
- If IsCorrect Then
- Begin
- Try
- Readln(FileElem, Stor);
- StrtoFloat(Stor);
- Except
- Errors := 'При чтении строки из файла для переменной `Stor` было обнаружено некорректное значение, равное 1.';
- Stor := '1';
- End;
- Try
- Readln(FileElem, Rad);
- StrtoFloat(Rad);
- Except
- Errors := Errors + #13#10 + 'При чтении строки из файла для переменной `Rad` было обнаружено некорректное значение, равное 1.';
- Rad := '1';
- End;
- End;
- Finally
- CloseFile(FileElem);
- ShowMessage('Файл сохранен успешно.');
- End;
- If Errors.Length > 0 Then
- Begin
- ShowMessage(Errors);
- End;
- EditKoefX.Text := Stor;
- EditKoefY.Text := Rad;
- End;
- Procedure TMainForm.SaveOptionClick(Sender: TObject);
- Begin //сохранение содержимого текстового поля MemoRes в файл
- If SaveDialog1.Execute Then
- Begin
- MemoRes.Lines.SaveToFile(SaveDialog1.FileName);
- End
- Else
- Begin
- ShowMessage('Файл сохранен успешно');
- End;
- End;
- Procedure TMainForm.DeveloperTabClick(Sender: TObject);
- Begin //отображение информации о разработчиках
- InformationForm.ShowModal;
- End;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement