Advertisement
Vladislav8653

последняя....

Mar 7th, 2023 (edited)
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 6.50 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.     Label2: TLabel;
  13.     Edit1: TEdit;
  14.     Button1: TButton;
  15.     Label3: TLabel;
  16.     Label4: TLabel;
  17.     MainMenu1: TMainMenu;
  18.     PopupMenu1: TPopupMenu;
  19.     SaveDialog1: TSaveDialog;
  20.     OpenDialog1: TOpenDialog;
  21.     N1: TMenuItem;
  22.     N2: TMenuItem;
  23.     N3: TMenuItem;
  24.     N4: TMenuItem;
  25.     N5: TMenuItem;
  26.     procedure Button1Click(Sender: TObject);
  27.     procedure Edit1Change(Sender: TObject);
  28.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  29.     procedure N4Click(Sender: TObject);
  30.     procedure N2Click(Sender: TObject);
  31.     procedure N3Click(Sender: TObject);
  32.     procedure N5Click(Sender: TObject);
  33.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  34.   private
  35.     { Private declarations }
  36.   public
  37.     { Public declarations }
  38.   end;
  39.  
  40. var
  41.     Form1: TForm1;
  42.     Result, Condition, Path : String;
  43.     IsFileOpen : Boolean;
  44. Const
  45.     OK =  ['a'..'z','A'..'Z', #08, #46, #32];
  46.  
  47. implementation
  48.  
  49. {$R *.dfm}
  50.  
  51. procedure TForm1.Button1Click(Sender: TObject);
  52. var
  53.     Str, TempStr : String;
  54.     I, J, Counter, LastOne : Integer;
  55.     ArrOfStr : Array of String[2];
  56.     ArrOFCounters : Array Of Integer;
  57.     Flag : Boolean;
  58. Const
  59.     OK = ['a' .. 'z'];
  60. begin
  61.     Label3.Caption := '';
  62.     Flag := True;
  63.     Str := Edit1.Text;
  64.     Condition := 'Исходная строка: ' + Str + #13#10;
  65.     SetLength(ArrOfStr, Str.Length - 1);
  66.     SetLength(ArrOFCounters, Str.Length - 1);
  67.     For J := 0 To High(ArrOFCounters) Do
  68.         ArrOFCounters[J] := 1;
  69.     I := 1;
  70.     While I <> Str.Length Do
  71.     Begin
  72.         If (Str[I] = ' ')  then
  73.         Begin
  74.             Delete(Str, I, 1);
  75.             Dec(I);
  76.         End;
  77.         Inc(I);
  78.     End;
  79.     I := 0;
  80.     While I <> Str.Length - 1 Do
  81.     Begin
  82.         TempStr := Str.Substring(I, 2);
  83.         For J := 0 To High(ArrOfStr) Do
  84.             If (TempStr = ArrofStr[J]) and (ArrOfStr[J] <> '') then
  85.             Begin
  86.                 Inc(ArrOFCounters[J]);
  87.                 Flag := False;
  88.             End
  89.             else
  90.             begin
  91.                 If (ArrOFStr[J] = '') and (Flag) then
  92.                 Begin
  93.                     ArrOfStr[J] := TempStr;
  94.                     Break
  95.                 End;
  96.             end;
  97.             Flag := True;
  98.             Inc(I);
  99.     End;
  100.     For I := 0 To High(ArrOfStr) Do
  101.         If ArrOfStr[I] = '' then
  102.             SetLength(ArrOfStr, High(ArrOfStr));
  103.     Counter := 0;
  104.     For J := 0 To High (ArrOfStr) Do
  105.     Begin
  106.         Label3.Caption := Label3.Caption + ArrOfStr[J] + ' - ' + IntToStr(ArrOfCounters[J]) + ' раз(а);  ';
  107.         Inc(Counter);
  108.         If Counter mod 6 = 0 then
  109.             Label3.Caption := Label3.Caption + #13#10;
  110.     End;
  111.     Result := 'Результат: ' + Label3.Caption;
  112.     N3.Enabled := True;
  113. end;
  114.  
  115. procedure TForm1.Edit1Change(Sender: TObject);
  116. begin
  117.      Label3.Caption := '';
  118.      If (Length (Edit1.Text) = 0) or (Length (Edit1.Text) = 1)then
  119.         Button1.Enabled := False
  120.      else
  121.      begin
  122.         Button1.Enabled := True;
  123.      end;
  124.      N3.Enabled := False;
  125. end;
  126.  
  127. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  128. begin
  129.     If (Key = #13) and (Button1.Enabled) then
  130.         Button1.Click;
  131.     If (Not(Key In OK)) Then
  132.         Key := #0;
  133.     If Key = '.' then
  134.         Key := #0;
  135. end;
  136.  
  137.  
  138. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  139. begin
  140.     CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  141. end;
  142.  
  143. procedure TForm1.N4Click(Sender: TObject);
  144. begin
  145.       Application.MessageBox('Максимальная длина исходной строки: 108 символов.'#13#10'Можно вводить только текст на латинице.', 'Инструкция', 0);
  146. end;
  147.  
  148. procedure TForm1.N5Click(Sender: TObject);
  149. begin
  150.      Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  151. end;
  152.  
  153. Function Open (): String;
  154. Begin
  155.     With Form1 Do
  156.     Begin
  157.         If OpenDialog1.Execute Then
  158.         Begin
  159.             Path := OpenDialog1.FileName;
  160.             IsFileOpen := True;
  161.         End
  162.         Else
  163.             IsFileOpen := False;
  164.     End;
  165.     Open := Path;
  166. End;
  167.  
  168. Function CheckStr (Str : String) : String;
  169. Var
  170.     I : Integer;
  171.     IsCorrect : Boolean;
  172.     FileInput: TextFile;
  173. Begin
  174.     IsCorrect := True;
  175.     Path := Open;
  176.     AssignFile(FileInput, Path);
  177.     Reset(FileInput);
  178.     If(IsFileOpen) Then
  179.     Begin
  180.         Readln(FileInput, Str);
  181.     End;
  182.     CloseFile(FileInput);
  183.     For I := 1 To Str.Length Do
  184.         If (Not(Str[I] in OK)) and (IsCorrect) then
  185.             IsCorrect := False;
  186.     If Length(Str) > 108 then
  187.     begin
  188.         IsCorrect := False;
  189.     end;
  190.     If IsCorrect then
  191.         CheckStr := Str
  192.     else
  193.         CheckStr := '';
  194. End;
  195.  
  196.  
  197. procedure TForm1.N2Click(Sender: TObject);
  198. Var
  199.     Str : String;
  200. begin
  201.     Str := CheckStr(Str);
  202.     If Str <> '' then
  203.     begin
  204.         Edit1.Text := Str;
  205.     end
  206.     else
  207.     begin
  208.          MessageBox(Form1.Handle, Pchar('Проверьте исходные данные. Текст должен быть написан только латиницей, не содержать цифр и специальных знаков. Максимальная длина - 108 символов.'), 'Ошибка', MB_ICONSTOP);
  209.     end;
  210. end;
  211.  
  212.  
  213. procedure TForm1.N3Click(Sender: TObject);
  214. Var
  215.     FileOutput: TextFile;
  216.     IsCorrect : Boolean;
  217.     ForSave : String;
  218. begin
  219.     ForSave := Condition + Result;
  220.     IsCorrect := True;
  221.     Path := Open;
  222.     If (IsFileOpen) Then
  223.     Begin
  224.         try
  225.             AssignFile(FileOutput, Path);
  226.             Rewrite(FileOutput);
  227.             Write(FileOutput, ForSave);
  228.         except
  229.             IsCorrect := False;
  230.             Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
  231.         end;
  232.         if IsCorrect then
  233.         Begin
  234.             Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  235.             Edit1.Text := '';
  236.             Label3.Caption := '';
  237.             CloseFile(FileOutput);
  238.         End;
  239.     End;
  240. end;
  241.  
  242.  
  243. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement