CARVIEW |
Select Language
HTTP/2 200
date: Fri, 10 Oct 2025 16:08:11 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1;mode=block
vary: accept-encoding
cf-cache-status: DYNAMIC
content-encoding: gzip
set-cookie: _csrf-frontend=0d982b7068872158a015de12cd2e6b45c92d0e32938ac3c70b4965d218a562caa%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22okdTaPVMoGMF4bJrLvGpgoUdG1kNHzy-%22%3B%7D; HttpOnly; Path=/
cf-ray: 98c75ff9dedf3585-BLR
Lab1Challenge1Forms - Pastebin.com
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.Tabs, Vcl.StdCtrls, Vcl.Menus,
- System.Actions, Vcl.ActnList, System.UITypes, Vcl.ExtDlgs;
- Const
- AllowedKeys = ['0'..'9', '-', #8, #9, #13];
- ROOMS_MIN = 1;
- ROOMS_MAX = 99999;
- MANS_AND_WOMANS_MIN = 0;
- MANS_AND_WOMANS_MAX = 99999;
- Type
- TMainForm = Class(TForm)
- Menu: TMainMenu;
- FileTab: TMenuItem;
- InfoTab: TMenuItem;
- AboutTab: TMenuItem;
- OpenFileOption: TMenuItem;
- SaveFileOption: TMenuItem;
- ExitFileOption: TMenuItem;
- FileOptionsSeparator: TMenuItem;
- InfoAboutFilesOption: TMenuItem;
- InfoAboutKeyboardOptions: TMenuItem;
- TaskLabel: TLabel;
- RoomsEdit: TEdit;
- WomansEdit: TEdit;
- MansEdit: TEdit;
- DescriptionLabel1: TLabel;
- DescriptionLabel3: TLabel;
- DescriptionLabel2: TLabel;
- CalculationButton: TButton;
- ResultLabel: TLabel;
- Actions: TActionList;
- OnKeyPressed: TAction;
- OnEditChanged: TAction;
- OnFormClose: TAction;
- OpenFileDialog: TOpenTextFileDialog;
- SaveFileDialog: TSaveTextFileDialog;
- Procedure CalculationButtonClick(Sender: TObject);
- Procedure OnKeyPressedExecute(Sender: TObject; Var Key: Char);
- Procedure OnEditChangedExecute(Sender: TObject);
- Procedure OnFormCloseExecute(Sender: TObject);
- Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
- Procedure OpenFileOptionClick(Sender: TObject);
- Procedure SaveFileOptionClick(Sender: TObject);
- Procedure AboutTabClick(Sender: TObject);
- Procedure InfoAboutFilesOptionClick(Sender: TObject);
- Procedure InfoAboutKeyboardOptionsClick(Sender: TObject);
- Private
- LatestResult: Boolean;
- Procedure CheckDataInEdits();
- Function Calculate(Const Rooms: Integer; Const Womans: Integer; Const Mans: Integer): Boolean;
- Procedure SetResultIntoLabel(Const Result: Boolean);
- Procedure ProcessFile(Const FileName: TFileName);
- Function Substring(Const Orig: String; Const Beg: Integer; Const Len: Integer): String;
- Function IsTextFile(Const FilePath: String): Boolean;
- Function CheckFileAvailability(Const FilePath: String; Const Read: Boolean): Boolean;
- Procedure SaveIntoFile(Const FileName: TFileName);
- Public
- End;
- Var
- MainForm: TMainForm;
- implementation
- {$R *.dfm}
- Procedure TMainForm.AboutTabClick(Sender: TObject);
- Begin
- MessageDlg('Программа для решения задания 1.1!' + #10 + 'Разработана Даниилом Струцом (Краснычем)',
- mtInformation, [mbOk], 0, mbOk);
- End;
- Function TMainForm.Calculate(Const Rooms: Integer; Const Womans: Integer; Const Mans: Integer): Boolean;
- Var
- MansRooms, WomansRooms: Integer;
- Begin
- MansRooms := Mans Div 4;
- WomansRooms := Womans Div 4;
- If Not(MansRooms * 4 = Mans) Then
- Inc(MansRooms);
- If Not(WomansRooms * 4 = Womans) Then
- Inc(WomansRooms);
- Calculate := (MansRooms + WomansRooms < Rooms + 1);
- End;
- Procedure TMainForm.SaveFileOptionClick(Sender: TObject);
- Begin
- If SaveFileDialog.Execute(Self.Handle) Then
- SaveIntoFile(SaveFileDialog.FileName);
- End;
- Procedure TMainForm.SaveIntoFile(Const FileName: TFileName);
- Var
- F: TextFile;
- FN: String;
- Dlg: TForm;
- Begin
- If Not (IsTextFile(FileName)) Then
- FN := FileName + '.txt'
- Else
- FN := FileName;
- If CheckFileAvailability(FN, False) Then
- Begin
- Try
- AssignFile(F, FN);
- Rewrite(F);
- If (LatestResult) Then
- Write(F, 'Достаточно')
- Else
- Write(F, 'Недостаточно');
- CloseFile(F);
- Except
- Dlg := CreateMessageDialog(
- 'Выбранный файл недоступен или не является текстовым файлом!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Сохранение в файл';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- End
- Else
- Begin
- Dlg := CreateMessageDialog(
- 'Выбранный файл недоступен или не является текстовым файлом!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Сохранение в файл';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- End;
- Procedure TMainForm.SetResultIntoLabel(Const Result: Boolean);
- Begin
- If (Result) Then
- ResultLabel.Caption := 'Достаточно'
- Else
- ResultLabel.Caption := 'Недостаточно';
- End;
- Procedure TMainForm.CalculationButtonClick(Sender: TObject);
- Var
- Rooms, Womans, Mans: Integer;
- IsCorrect: Boolean;
- Reasons: String;
- Dlg: TForm;
- Begin
- IsCorrect := True;
- Rooms := -1;
- Womans := -1;
- Mans := -1;
- Try
- Rooms := StrToInt(RoomsEdit.Text);
- Womans := StrToInt(WomansEdit.Text);
- Mans := StrToInt(MansEdit.Text);
- Except
- IsCorrect := False;
- End;
- If (Rooms < ROOMS_MIN) Or (Rooms > ROOMS_MAX) Then
- Begin
- IsCorrect := False;
- Reasons := Reasons + ' количество комнат';
- End;
- If (Womans < MANS_AND_WOMANS_MIN) Or (Womans > MANS_AND_WOMANS_MAX) Then
- Begin
- IsCorrect := False;
- If Not (Reasons = '') Then
- Reasons := Reasons + ',';
- Reasons := Reasons + ' количество женщин';
- End;
- If (Mans < MANS_AND_WOMANS_MIN) Or (Mans > MANS_AND_WOMANS_MAX) Then
- Begin
- IsCorrect := False;
- If Not (Reasons = '') Then
- Reasons := Reasons + ',';
- Reasons := Reasons + ' количество мужчин';
- End;
- If (IsCorrect) Then
- Begin
- LatestResult := Calculate(Rooms, Womans, Mans);
- SetResultIntoLabel(LatestResult);
- SaveFileOption.Enabled := True;
- End
- Else
- Begin
- Dlg := CreateMessageDialog(
- 'Значения в следующих полях неверны:' + Reasons + '. Прочитайте инструкцию!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Вычисление';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- End;
- Procedure TMainForm.CheckDataInEdits();
- Begin
- If Not (RoomsEdit.Text = '') And Not (MansEdit.Text = '') And Not (WomansEdit.Text = '') Then
- CalculationButton.Enabled := True
- Else
- CalculationButton.Enabled := False;
- End;
- Procedure TMainForm.FormClose(Sender: TObject; Var Action: TCloseAction);
- Begin
- Action := TCloseAction.caNone;
- OnFormCloseExecute(Sender);
- End;
- Procedure TMainForm.OnEditChangedExecute(Sender: TObject);
- Begin
- CheckDataInEdits();
- SaveFileOption.Enabled := False;
- End;
- Procedure TMainForm.OnFormCloseExecute(Sender: TObject);
- Var
- CloseDialog: TForm;
- Begin
- CloseDialog := CreateMessageDialog(
- 'Вы точно хотите выйти из программы?',
- mtConfirmation, [mbYes, mbNo], mbNo);
- CloseDialog.Caption := 'Выход из программы';
- If (CloseDialog.ShowModal() = 6) Then
- Application.Terminate();
- CloseDialog.Free();
- End;
- Procedure TMainForm.OnKeyPressedExecute(Sender: TObject; Var Key: Char);
- Begin
- If Not CharInSet(Key, AllowedKeys) Then
- Key := #0
- End;
- Procedure TMainForm.OpenFileOptionClick(Sender: TObject);
- Begin
- If OpenFileDialog.Execute(Self.Handle) Then
- ProcessFile(OpenFileDialog.FileName);
- End;
- Procedure TMainForm.ProcessFile(Const FileName: TFileName);
- Var
- F: TextFile;
- Rooms, Womans, Mans: Integer;
- IsCorrect: Boolean;
- Dlg: TForm;
- Begin
- IsCorrect := True;
- Rooms := -1;
- Mans := -1;
- Womans := -1;
- If CheckFileAvailability(FileName, True) Then
- Begin
- Try
- AssignFile(F, FileName);
- Reset(F);
- If Not Eof(F) Then
- Read(F, Rooms);
- If Not Eof(F) Then
- Read(F, Womans);
- If Not Eof(F) Then
- Read(F, Mans);
- CloseFile(F);
- Except
- Dlg := CreateMessageDialog(
- 'Файл содержит неверные значения!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Открытие файла';
- Dlg.ShowModal();
- Dlg.Free();
- IsCorrect := False;
- End;
- If (IsCorrect) Then
- Begin
- If (Rooms < ROOMS_MIN) Or (Rooms > ROOMS_MAX)
- Or (Womans < MANS_AND_WOMANS_MIN) Or (Womans > MANS_AND_WOMANS_MAX)
- Or (Mans < MANS_AND_WOMANS_MIN) Or (Mans > MANS_AND_WOMANS_MAX) Then
- Begin
- Dlg := CreateMessageDialog(
- 'Файл содержит значения, находящиеся вне границ, или же в файле недостаточно нужных значений!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Открытие файла';
- Dlg.ShowModal();
- Dlg.Free();
- End
- Else
- Begin
- RoomsEdit.Text := IntToStr(Rooms);
- WomansEdit.Text := IntToStr(Womans);
- MansEdit.Text := IntToStr(Mans);
- End;
- End;
- End
- Else
- Begin
- Dlg := CreateMessageDialog(
- 'Выбранный файл недоступен или не является текстовым файлом!',
- mtError, [mbOk], mbOk);
- Dlg.Caption := 'Открытие файла';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- End;
- Function TMainForm.Substring(Const Orig: String; Const Beg: Integer; Const Len: Integer): String;
- Var
- Res: String;
- I, En: Integer;
- Begin
- En := Beg + Len - 1;
- If ((Beg > 0) And (En < (Length(Orig) + 1))) Then
- Begin
- For I := Beg To En Do
- Res := Res + Orig[I];
- End;
- Substring := Res;
- End;
- Procedure TMainForm.InfoAboutFilesOptionClick(Sender: TObject);
- Var
- Dlg: TForm;
- Begin
- Dlg := CreateMessageDialog(
- 'Для открытия файла с нужными данными:' + #10
- + '1. Нажмите на пункт "Файл" в меню сверху и выберите опцию "Открыть..."' + #10
- + '2. Выберите нужный текстовый файл' + #10
- + '3. Откройте его при помощи кнопки "Открыть"' + #10
- + 'Если информация в файле верная - данные появятся в полях для ввода!' + #10
- + '' + #10
- + 'Для сохранения результатов в файл:' + #10
- + '1. Нажмите на пункт "Файл" в меню сверху и выберите опцию "Сохранить..."' + #10
- + '2. Выберите файл или же укажите название нового файла для сохранения' + #10
- + '3. Нажмите на кнопку "Сохранить"' + #10
- + 'Если файл будет доступен - результат будет сохранен!',
- mtInformation, [mbOk], mbOk);
- Dlg.Caption := 'Инструкция: выбор файлов';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- Procedure TMainForm.InfoAboutKeyboardOptionsClick(Sender: TObject);
- Var
- Dlg: TForm;
- Begin
- Dlg := CreateMessageDialog(
- 'Работа с программой:' + #10
- + '1. Введите данные в поля для ввода' + #10
- + '2. Нажмите на кнопку "Вычислить"' + #10
- + 'Если данные верны - в строке под кнопкой будет выведен результат!' + #10
- + '' + #10
- + 'Однако для входных данных есть некоторые требования:' + #10
- + '- Количество комнат должно быть от 1 до 99999 (включительно)' + #10
- + '- Количество мужчин и женщин должно быть от 0 до 99999 (включительно)',
- mtInformation, [mbOk], mbOk);
- Dlg.Caption := 'Инструкция: работа с программой';
- Dlg.ShowModal();
- Dlg.Free();
- End;
- Function TMainForm.IsTextFile(Const FilePath: String): Boolean;
- Var
- Path: String;
- Begin
- Path := LowerCase(Substring(FilePath, Length(FilePath) - 3, 4));
- IsTextFile := (Path = '.txt');
- End;
- Function TMainForm.CheckFileAvailability(Const FilePath: String; Const Read: Boolean): Boolean;
- Var
- IsAvailable: Boolean;
- Checkable: TextFile;
- Begin
- IsAvailable := True;
- AssignFile(Checkable, FilePath);
- Try
- If (Read) Then
- Reset(Checkable)
- Else
- Begin
- If (FileExists(FilePath)) Then
- Append(Checkable)
- Else
- Rewrite(Checkable);
- End;
- CloseFile(Checkable);
- Except
- IsAvailable := False;
- End;
- If (IsAvailable And Not IsTextFile(FilePath)) Then
- IsAvailable := False;
- CheckFileAvailability := IsAvailable;
- End;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
-
✅⭐ Make huge profits on trading ⭐⭐ R
JavaScript | 3 sec ago | 0.24 KB
-
✅⭐ Make huge profits on trading ⭐⭐ G
JavaScript | 12 sec ago | 0.24 KB
-
⭐✅ MAKE $2500 IN 15 MIN⭐⭐⭐ K
JavaScript | 14 sec ago | 0.24 KB
-
⭐✅ MAKE $2500 IN 15 MIN⭐⭐⭐ F
JavaScript | 23 sec ago | 0.24 KB
-
⭐✅ Exploit 2500$ in 15 Minutes⭐⭐⭐ 8
JavaScript | 26 sec ago | 0.24 KB
-
⭐✅ Exploit 2500$ in 15 Minutes⭐⭐⭐ K
JavaScript | 34 sec ago | 0.24 KB
-
Free Crypto Method (NEVER SEEN BEFORE)⭐⭐ R
JavaScript | 39 sec ago | 0.24 KB
-
Free Crypto Method (NEVER SEEN BEFORE)⭐⭐ Q
JavaScript | 45 sec ago | 0.24 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand