Advertisement
ksyshshot

Lab.3.1_Формы

Dec 14th, 2022
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.56 KB | Source Code | 0 0
  1. unit Lab_3_1;
  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.Menus, Vcl.StdCtrls;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     MainMenu: TMainMenu;
  12.     Label1: TLabel;
  13.     EditFirstString: TEdit;
  14.     EditSecString: TEdit;
  15.     Button1: TButton;
  16.     Button2: TButton;
  17.     Button3: TButton;
  18.     Label2: TLabel;
  19.     Label3: TLabel;
  20.     Label4: TLabel;
  21.     N1: TMenuItem;
  22.     N2: TMenuItem;
  23.     N3: TMenuItem;
  24.     N4: TMenuItem;
  25.     N5: TMenuItem;
  26.     OpenDialog: TOpenDialog;
  27.     SaveDialog: TSaveDialog;
  28.     EditAnswer: TEdit;
  29.     procedure N4Click(Sender: TObject);
  30.     procedure N5Click(Sender: TObject);
  31.     procedure EditFirstStringChange(Sender: TObject);
  32.     procedure EditSecStringChange(Sender: TObject);
  33.     procedure Button1Click(Sender: TObject);
  34.     procedure Button2Click(Sender: TObject);
  35.     procedure Button3Click(Sender: TObject);
  36.     procedure FormCreate(Sender: TObject);
  37.   private
  38.     { Private declarations }
  39.   public
  40.     { Public declarations }
  41.   end;
  42.  
  43. var
  44.   Form1: TForm1;
  45.  
  46. implementation
  47.  
  48. {$R *.dfm}
  49.  
  50. uses UnitError;
  51.  
  52. Var
  53.     FirstString, SecString, Answer: String;
  54.  
  55. Procedure FindIntersectionOfStrings(FirstStr, SecoStr: String; Var Ans: String);
  56. Var
  57.     I: Integer;
  58. Begin
  59.     Ans := '';
  60.     For I := 1 To Length(FirstString) Do
  61.         If Pos(FirstString[I], SecString) <> 0 Then
  62.             Ans := Ans + FirstString[I];
  63. End;
  64.  
  65. Procedure FindSpecialCharInString(FirstStr, SecStr: String; Var Ans: String);
  66. Var
  67.     I: Integer;
  68. Begin
  69.     Ans := '';
  70.     For I := 1 To Length(FirstStr) Do
  71.         If Pos(FirstStr[I], SecStr) = 0 Then
  72.             Ans := Ans + FirstStr[I];
  73. End;
  74.  
  75. procedure TForm1.Button1Click(Sender: TObject);
  76. begin
  77.     FindIntersectionOfStrings(FirstString, SecString, Answer);
  78.     If Answer = '' Then
  79.         EditAnswer.Text := 'В строке не найдено искомых элементов'
  80.     Else
  81.         EditAnswer.Text := Answer;
  82. end;
  83.  
  84. procedure TForm1.Button2Click(Sender: TObject);
  85. begin
  86.     FindSpecialCharInString(FirstString, SecString, Answer);
  87.     EditAnswer.Text := Answer;
  88. end;
  89.  
  90. procedure TForm1.Button3Click(Sender: TObject);
  91. begin
  92.     FindSpecialCharInString(SecString, FirstString, Answer);
  93.     EditAnswer.Text := Answer;
  94. end;
  95.  
  96. procedure TForm1.EditFirstStringChange(Sender: TObject);
  97. begin
  98.     If (EditSecString.Text <> '') Then
  99.     Begin
  100.         Button1.Enabled := True;
  101.         Button2.Enabled := True;
  102.         Button3.Enabled := True;
  103.     End;
  104.     EditSecString.Enabled := True;
  105.     N5.Enabled := False;
  106.     EditAnswer.Text := '';
  107.     Answer := '';
  108.     If (EditFirstString.Text = '') Then
  109.     Begin
  110.         N5.Enabled := False;
  111.         Button1.Enabled := False;
  112.         Button2.Enabled := False;
  113.         Button3.Enabled := False;
  114.         EditSecString.Enabled := False;
  115.         FirstString := '';
  116.     End
  117.     Else
  118.         FirstString := FirstString + EditFirstString.Text;
  119. end;
  120.  
  121. procedure TForm1.EditSecStringChange(Sender: TObject);
  122. begin
  123.     Button1.Enabled := True;
  124.     Button2.Enabled := True;
  125.     Button3.Enabled := True;
  126.     EditAnswer.Text := '';
  127.     If (EditSecString.Text = '') Then
  128.     Begin
  129.         N5.Enabled := False;
  130.         Button1.Enabled := False;
  131.         Button2.Enabled := False;
  132.         Button3.Enabled := False;
  133.         SecString := '';
  134.     End
  135.     Else
  136.         SecString := SecString + EditSecString.Text;
  137. end;
  138.  
  139. procedure TForm1.FormCreate(Sender: TObject);
  140. begin
  141.     FirstString := '';
  142.     SecString := '';
  143. end;
  144.  
  145. procedure TForm1.N4Click(Sender: TObject);
  146. var
  147.     F: TextFile;
  148.     Path, EOF_Error: String;
  149.     Res: Integer;
  150.     IsCorrect: Boolean;
  151. begin
  152.     Res := 0;
  153.     IsCorrect := True;
  154.     EOF_Error := '';
  155.     If OpenDialog.Execute() Then
  156.     Begin
  157.         Path := OpenDialog.FileName;
  158.         AssignFile(F, Path);
  159.         Try
  160.             Reset(F);
  161.             Try
  162.                 Readln(F, FirstString);
  163.                 Readln(F, SecString);
  164.                 If Not EOF(F) Then
  165.                 Begin
  166.                     EOF_Error := 'В файле найдены лишние элементы';
  167.                     IsCorrect := False;
  168.                 End
  169.                 Else
  170.                 Begin
  171.                     EditFirstString.Text := UTF8ToAnsi(FirstString);
  172.                     EditSecString.Text := UTF8ToAnsi(SecString);
  173.                 End;
  174.             Finally
  175.                 CloseFile(F);
  176.             End;
  177.         Except
  178.             IsCorrect := False;
  179.         End;
  180.         If not (IsCorrect) Then
  181.         Begin
  182.             UnitError.FormError.LabelError.Caption := 'Ошибка считывания с файла. ' + EOF_Error;
  183.             Res := UnitError.FormError.ShowModal();
  184.         End;
  185.         if Res > 0 Then
  186.             UnitError.FormError.LabelError.Caption := '';
  187.     End;
  188. end;
  189.  
  190. procedure TForm1.N5Click(Sender: TObject);
  191. Var
  192.     F: TextFile;
  193.     Path: String;
  194.     Res: Integer;
  195. begin
  196.     Res := 0;
  197.     If SaveDialog.Execute() Then
  198.     Begin
  199.         Path := SaveDialog.FileName;
  200.         AssignFile(F, Path);
  201.         Try
  202.             Rewrite(F);
  203.             Try
  204.                 Write(F, EditAnswer.Text);
  205.             Finally
  206.                 CloseFile(F);
  207.             End;
  208.         Except
  209.             UnitError.FormError.LabelError.Caption := 'Ошибка записи в файл.';
  210.             Res := UnitError.FormError.ShowModal();
  211.         End;
  212.         If (Res > 0) Then
  213.             UnitError.FormError.LabelError.Caption := '';
  214.     End;
  215. end;
  216.  
  217. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement