Advertisement
Vladislav8653

3.4

Mar 5th, 2023 (edited)
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.28 KB | None | 0 0
  1. unit Unit1;
  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.   TForm1 = class(TForm)
  11.     Label1: TLabel;
  12.     Edit1: TEdit;
  13.     SaveDialog1: TSaveDialog;
  14.     PopupMenu1: TPopupMenu;
  15.     OpenDialog1: TOpenDialog;
  16.     Button1: TButton;
  17.     MainMenu1: TMainMenu;
  18.     N1: TMenuItem;
  19.     N2: TMenuItem;
  20.     N3: TMenuItem;
  21.     N4: TMenuItem;
  22.     N5: TMenuItem;
  23.     Label2: TLabel;
  24.     procedure N4Click(Sender: TObject);
  25.     procedure N5Click(Sender: TObject);
  26.     procedure Button1Click(Sender: TObject);
  27.     procedure Edit1Change(Sender: TObject);
  28.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  29.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  30.     procedure N2Click(Sender: TObject);
  31.     procedure N3Click(Sender: TObject);
  32.   private
  33.     { Private declarations }
  34.   public
  35.     { Public declarations }
  36.   end;
  37.  
  38. var
  39.   Form1: TForm1;
  40.   Path, Result : String;
  41.   IsFileOpen : Boolean;
  42.  
  43. implementation
  44.  
  45. {$R *.dfm}
  46.  
  47.  
  48.  
  49. function CheckBrackets(const Str: string): Boolean;
  50. var
  51.     Stack: string;
  52.     i: Integer;
  53. begin
  54.     Stack := '';
  55.     for i := 1 to Length(Str) do
  56.     begin
  57.         if Str[i] in ['(', '{', '['] then
  58.             Stack := Stack + Str[i]
  59.         else if Str[i] in [')', '}', ']'] then
  60.         begin
  61.             if Length(Stack) = 0 then
  62.                 Exit(False);
  63.             case Str[i] of
  64.                 ')': if Stack[Length(Stack)] = '(' then
  65.                         Delete(Stack, Length(Stack), 1)
  66.                     else
  67.                 Exit(False);
  68.                 '}': if Stack[Length(Stack)] = '{' then
  69.                Delete(Stack, Length(Stack), 1)
  70.                     else
  71.                 Exit(False);
  72.                 ']': if Stack[Length(Stack)] = '[' then
  73.                Delete(Stack, Length(Stack), 1)
  74.                     else
  75.                 Exit(False);
  76.             end;
  77.         end;
  78.     end;
  79.     Result := Length(Stack) = 0;
  80. end;
  81.  
  82.  
  83.  
  84. procedure TForm1.Button1Click(Sender: TObject);
  85. Var
  86.     Str : String;
  87.     IsTrue : Boolean;
  88. begin
  89.     Str := Edit1.Text;
  90.     IsTrue := CheckBrackets(Str);
  91.     If IsTrue then
  92.         Label2.Caption := 'Баланс есть'
  93.     else
  94.     begin
  95.         Label2.Caption := 'Баланса нет';
  96.     end;
  97.     Label2.Visible := True;
  98.     Result := 'Исходная строка: ' + Str + '. Результат: ' + Label2.Caption;
  99.     N3.Enabled := True;
  100. end;
  101.  
  102.  
  103.  
  104.  
  105.  
  106. procedure TForm1.Edit1Change(Sender: TObject);
  107. begin
  108.     N3.Enabled := False;
  109.     If Length(Edit1.Text) = 0 then
  110.         Button1.Enabled := False
  111.     else
  112.         Button1.Enabled := True;
  113. end;
  114.  
  115. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  116. begin
  117.     If (Key = #13) and (Button1.Enabled) then
  118.         Button1.Click;
  119. end;
  120.  
  121. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  122. begin
  123.      CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  124. end;
  125.  
  126. Function Open (): String;
  127. Begin
  128.     With Form1 Do
  129.     Begin
  130.         If OpenDialog1.Execute Then
  131.         Begin
  132.             Path := OpenDialog1.FileName;
  133.             IsFileOpen := True;
  134.         End
  135.         Else
  136.             IsFileOpen := False;
  137.     End;
  138.     Open := Path;
  139. End;
  140.  
  141.  
  142.  
  143. procedure TForm1.N2Click(Sender: TObject);
  144. Var
  145.     FileInput: TextFile;
  146.     Str : String;
  147. begin
  148.     Path := Open;
  149.     AssignFile(FileInput, Path);
  150.     Reset(FileInput);
  151.     If(IsFileOpen) Then
  152.     Begin
  153.         Readln(FileInput, Str);
  154.     End;
  155.     If Str <> '' then
  156.     begin
  157.         Edit1.Text := Str;
  158.     end
  159.     else
  160.     begin
  161.          MessageBox(Form1.Handle, Pchar('Проверьте исходные данные, так как в файле ничего нет.'), 'Ошибка', MB_ICONSTOP);
  162.     end;
  163.     CloseFile(FileInput);
  164. end;
  165.  
  166. procedure TForm1.N3Click(Sender: TObject);
  167. Var
  168.     FileOutput: TextFile;
  169.     IsCorrect : Boolean;
  170. begin
  171.     IsCorrect := True;
  172.     Path := Open;
  173.     If (IsFileOpen) Then
  174.     Begin
  175.         try
  176.             AssignFile(FileOutput, Path);
  177.             Rewrite(FileOutput);
  178.             Write(FileOutput, Result);
  179.         except
  180.             IsCorrect := False;
  181.             Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
  182.         end;
  183.         if IsCorrect then
  184.         Begin
  185.             Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  186.             Edit1.Text := '';
  187.             Label2.Caption := '';
  188.             CloseFile(FileOutput);
  189.         End;
  190.     End;
  191. end;
  192. procedure TForm1.N4Click(Sender: TObject);
  193. begin
  194.      Application.MessageBox('Программа проверяет, есть ли в вашем тексте баланс скобочек. Балансом считаются, к примеру, такие случаи: ( ), [ ], { }. Балансом не являются { ], { { } и тп.', 'Инструкция', 0);
  195. end;
  196.  
  197. procedure TForm1.N5Click(Sender: TObject);
  198. begin
  199.      Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  200. end;
  201.  
  202.  
  203.  
  204.  
  205.  
  206. end.
  207.  
  208.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement