Advertisement
SmnVadik

Lab 4.4 (Delphi)

Mar 23rd, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.49 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.     Edit1: TEdit;
  12.     Button1: TButton;
  13.     Label1: TLabel;
  14.     MainMenu1: TMainMenu;
  15.     SaveDialog1: TSaveDialog;
  16.     OpenDialog1: TOpenDialog;
  17.     PopupMenu1: TPopupMenu;
  18.     File1: TMenuItem;
  19.     Task: TMenuItem;
  20.     Inst: TMenuItem;
  21.     Dev: TMenuItem;
  22.     OpenF: TMenuItem;
  23.     SaveF: TMenuItem;
  24.     N1: TMenuItem;
  25.     Out: TMenuItem;
  26.     procedure Button1Click(Sender: TObject);
  27.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  28.     procedure Edit1Change(Sender: TObject);
  29.     procedure OpenFClick(Sender: TObject);
  30.     procedure SaveFClick(Sender: TObject);
  31.     procedure TaskClick(Sender: TObject);
  32.     procedure InstClick(Sender: TObject);
  33.     procedure DevClick(Sender: TObject);
  34.     procedure OutClick(Sender: TObject);
  35.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  36.   private
  37.     { Private declarations }
  38.   public
  39.     { Public declarations }
  40.   end;
  41.  
  42. const
  43.     MAX = 50;
  44.  
  45. var
  46.   Form1: TForm1;
  47.   Path: String;
  48.   IsFileOpen: Boolean;
  49.  
  50. implementation
  51.  
  52. {$R *.dfm}
  53.  
  54.  
  55. Function F(Str: String): String;
  56. Var p: Integer;
  57. Begin
  58.     p := pos('baba', Str);
  59.     If p > 0 Then delete(Str, p, 2);
  60.     if p = 0 then Result := Str
  61.     Else
  62.         Result := F(Str);
  63. End;
  64.  
  65.  
  66. procedure TForm1.Button1Click(Sender: TObject);
  67. var
  68.     Text: String;
  69. begin
  70.     Text := Edit1.Text;
  71.     Label1.Caption := F(Text);
  72.     Label1.Visible := True;
  73. end;
  74.  
  75. procedure TForm1.DevClick(Sender: TObject);
  76. begin
  77.     Application.MessageBox('Symonik Vadim, 251004', 'Developer', 0);
  78. end;
  79.  
  80. procedure TForm1.Edit1Change(Sender: TObject);
  81. begin
  82.     Label1.Visible := False;
  83.     If Length(Edit1.Text) = 0 Then
  84.         Button1.Enabled := False
  85.     Else
  86.         Button1.Enabled := True;
  87.     If Length(Edit1.Text) > MAX Then
  88.         Application.MessageBox('The maximum length of the string is 50 characters', 'Notification', 0)
  89. end;
  90.  
  91. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  92. begin
  93.     If not (Key in ['a', 'b', 'c', 'A', 'B', 'C',  #8, #13]) Then
  94.         Key := #0;
  95.     If (Key = #13) And (Button1.Enabled = True) Then
  96.         Button1.Click;
  97. end;
  98.  
  99. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  100. begin
  101.     CanClose := MessageDlg('Do you really want to get out?', mtConfirmation, [mbYes,mbNo], 0)= IDYes
  102. end;
  103.  
  104. procedure TForm1.InstClick(Sender: TObject);
  105. const
  106.     Str1 = '1. Enter only the characters A, B and C.';
  107.     Str2 = #13#10'2. The maximum string length is 50 characters.';
  108.     Str3 = #13#10'3. When entering values from a file, they must meet the above conditions.';
  109.  
  110. begin
  111.     Application.MessageBox(Str1 + Str2 + Str3, 'Instruction', 0);
  112. end;
  113.  
  114. Function Open() : String;
  115. begin
  116.     with Form1 Do
  117.     begin
  118.         If SaveDialog1.Execute Then
  119.         begin
  120.             Path := SaveDialog1.FileName;
  121.             IsFileOpen := True;
  122.         end
  123.         Else
  124.             IsFileOpen := False;
  125.     end;
  126.     Open := Path;
  127. end;
  128.  
  129.  
  130. Function GetLineFromF(Var FileInput: TextFile): String;
  131. Var
  132.     I: Integer;
  133.     Str: String;
  134.     IsCorrect: Boolean;
  135. Begin
  136.     IsCorrect := True;
  137.     If Not Eof(FileInput) Then
  138.     Begin
  139.         Try
  140.             Read(FileInput, Str);
  141.         Except
  142.             MessageBox(Form1.Handle, PChar('Invalid data'), 'Error', MB_ICONSTOP);
  143.             Str := '';
  144.             IsCorrect := False;
  145.         End;
  146.         If Not(IsCorrect) and (Length(Str) > MAX) Then
  147.         Begin
  148.             MessageBox(Form1.Handle, PChar('The maximum length of the string is 50 characters'), 'Error', MB_ICONSTOP);
  149.             Str := '';
  150.             IsCorrect := False;
  151.         End;
  152.         For I := 1 to Length(Str) do
  153.         Begin
  154.             If (Str[I] <> 'A') And (Str[I] <> 'B') And (Str[I] <> 'C') And (Str[I] <> 'a') And (Str[I] <> 'b') And (Str[I] <> 'c') Then
  155.             Begin
  156.                 Str := '';
  157.                 MessageBox(Form1.Handle, PChar('Invalid data'), 'Error', MB_ICONSTOP);
  158.             End;
  159.         End;
  160.     End
  161.     Else
  162.         MessageBox(Form1.Handle, PChar('Not enough data in the file!'), 'Error', MB_ICONSTOP);
  163.  
  164.     GetLineFromF := Str;
  165. End;
  166.  
  167. procedure TForm1.OpenFClick(Sender: TObject);
  168. var
  169.     F: TextFile;
  170. begin
  171.     If OpenDialog1.Execute Then
  172.     Begin
  173.         AssignFile(F, OpenDialog1.FileName);
  174.         Try
  175.             Try
  176.                 Reset(F);
  177.                 Edit1.Text := GetLineFromF(F);
  178.                 If (Edit1.Text <> '') Then
  179.                 Begin
  180.                     Button1.Click;
  181.                 End;
  182.             Finally
  183.                 CloseFile(F);
  184.             End;
  185.         Except
  186.  
  187.         End;
  188.     End;
  189. end;
  190.  
  191. procedure TForm1.OutClick(Sender: TObject);
  192. begin
  193.     Form1.Close;
  194. end;
  195.  
  196. procedure TForm1.SaveFClick(Sender: TObject);
  197. var
  198.     F: TextFile;
  199. begin
  200.     Path := Open;
  201.     If IsFileOpen Then
  202.     Begin
  203.         AssignFile(F, Path);
  204.         Rewrite(F);
  205.         Writeln(F, Label1.Caption);
  206.         Application.MessageBox('The data was saved successfully', 'Saving', 0);
  207.         CloseFile(F);
  208.     End;
  209. end;
  210.  
  211. procedure TForm1.TaskClick(Sender: TObject);
  212. const
  213.     Str1 = 'The string of characters consists of the letters A, B and C.';
  214.     Str2 = #13#10'Remove one pair of BA from the sequence of BABA.';
  215. begin
  216.     Application.MessageBox(Str1 + Str2, 'Task', 0);
  217. end;
  218.  
  219. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement