Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.56 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.   TStatkevich_Angelina_Lab3_1 = class(TForm)
  11.     Label1: TLabel;
  12.     Edit1: TEdit;
  13.     Button1: TButton;
  14.     Label2: TLabel;
  15.     Edit2: TEdit;
  16.     PopupMenu1: TPopupMenu;
  17.     MainMenu1: TMainMenu;
  18.     OpenFile: TOpenDialog;
  19.     SaveFile: TSaveDialog;
  20.     N1: TMenuItem;
  21.     N2: TMenuItem;
  22.     N3: TMenuItem;
  23.     N4: TMenuItem;
  24.     N5: TMenuItem;
  25.     N6: TMenuItem;
  26.     N7: TMenuItem;
  27.     N8: TMenuItem;
  28.     procedure Button1Click(Sender: TObject);
  29.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  30.     procedure N5Click(Sender: TObject);
  31.     function CheckFileName(MyFile: string): string;
  32.     procedure N7Click(Sender: TObject);
  33.     procedure N8Click(Sender: TObject);
  34.     procedure Edit1Change(Sender: TObject);
  35.     procedure N2Click(Sender: TObject);
  36.     procedure N3Click(Sender: TObject);
  37.   private
  38.     { Private declarations }
  39.   public
  40.     { Public declarations }
  41.   end;
  42.  
  43. var
  44.   Statkevich_Angelina_Lab3_1: TStatkevich_Angelina_Lab3_1;
  45.  
  46. implementation
  47.  
  48. {$R *.dfm}
  49.  
  50. procedure TStatkevich_Angelina_Lab3_1.Button1Click(Sender: TObject);
  51. var
  52.    s,s1:string;
  53.    c:char;
  54.    i,j,k:byte;
  55. begin
  56.    s1:=Edit1.Text;{сделаем копию строки, если строка не нужна, то можно и не делать}
  57.    i:=1;
  58.    while i<length(s1) do
  59.    begin
  60.       c:=s1[i];{запомним символ}
  61.       k:=0;
  62.       for j:=length(s1) downto i+1 do{с конца строки ищем такие же}
  63.          if s1[j]=c then{если есть}
  64.          begin
  65.             k:=1;{фиксируем}
  66.             delete(s1,j,1);{удаляем}
  67.          end;
  68.       if k=1 then
  69.          delete(s1,i,1){если не один, удаляем}
  70.       else i:=i+1;{иначе проверяем следующий}
  71.    end;
  72.    if s1='' then
  73.       Edit2.Text := 'Таких символов нет'
  74.    else
  75.       Edit2.Text := s1;
  76.    N3.Enabled := True;
  77.    Label2.Visible := True;
  78.    Edit2.Visible := True;
  79. end;
  80.  
  81. procedure TStatkevich_Angelina_Lab3_1.FormClose(Sender: TObject; var Action: TCloseAction);
  82. var
  83.    Choice: Integer;
  84. begin
  85.    Choice := MessageDlg('Вы уверены, что хотите выйти?', mtConfirmation, [mbYes, mbNo], 0);
  86.    case Choice  of
  87.       mrYes: ;
  88.       mrNo: Action := caNone;
  89.    end;
  90. end;
  91.  
  92. procedure TStatkevich_Angelina_Lab3_1.N2Click(Sender: TObject);
  93. var
  94.    inputFile: TextFile;
  95.    temp: string;
  96. begin
  97.    if OpenFile.Execute then
  98.    begin
  99.        try
  100.           AssignFile(inputFile, OpenFile.FileName);
  101.           Reset(inputFile);
  102.           if SeekEof(inputFile) then
  103.           begin
  104.              MessageDlg('Похоже, файл пустой. Повторите попытку', mtError, [mbRetry], 0);
  105.              Edit1.Clear;
  106.           end
  107.           else
  108.           begin
  109.              ReadLn(inputFile,temp);
  110.              Edit1.Text := temp;
  111.              CloseFile(inputFile);
  112.           end;
  113.        except
  114.           MessageDlg('Ошибка ввода данных. Повторите попытку.', mtError, [mbRetry], 0);
  115.           Edit1.Clear;
  116.        end;
  117.    end;
  118. end;
  119.  
  120. procedure TStatkevich_Angelina_Lab3_1.N3Click(Sender: TObject);
  121. var
  122.    outputFile: TextFile;
  123.    MyFile: string;
  124.    ButtonSelected: byte;
  125. begin
  126.    if SaveFile.Execute then
  127.    begin
  128.       MyFile := SaveFile.FileName;
  129.       MyFile := CheckFileName(MyFile);
  130.       if FileExists(MyFile) then
  131.       begin
  132.          ButtonSelected := MessageDlg('Сохранить результаты в файл?', mtConfirmation, [mbYes, mbNo], 0);
  133.          if ButtonSelected = mrYes then
  134.          begin
  135.             AssignFile(outputFile, MyFile);
  136.             Rewrite(outputFile);
  137.             writeln(outputFile, 'Символы, встречающиеся 1 раз: ', Edit2.Text);
  138.             CloseFile(outputFile);
  139.          end
  140.          else
  141.             N3Click(Sender);
  142.       end
  143.       else
  144.       begin
  145.          AssignFile(outputFile, MyFile);
  146.          Rewrite(outputFile);
  147.          writeln(outputFile, 'Символы, встречающиеся 1 раз: ', Edit2.Text);
  148.          CloseFile(outputFile);
  149.       end;
  150.    end;
  151. end;
  152.  
  153.  
  154. procedure TStatkevich_Angelina_Lab3_1.N5Click(Sender: TObject);
  155. begin
  156.    Close;
  157. end;
  158.  
  159. procedure TStatkevich_Angelina_Lab3_1.N7Click(Sender: TObject);
  160. const
  161.    sms = 'Программа определяет, какие символы встречаются 1 раз.';
  162. begin
  163.    MessageDlg(sms, mtInformation, [mbOk], 0);
  164. end;
  165.  
  166.  
  167. procedure TStatkevich_Angelina_Lab3_1.N8Click(Sender: TObject);
  168. begin
  169.    MessageDlg('Программа разработана Статкевич Ангелиной,' + #13 +
  170.    'студенткой группы 851001, ФКСиС, ПОИТ' , mtInformation, [mbOk], 0);
  171. end;
  172.  
  173.  
  174. function TStatkevich_Angelina_Lab3_1.CheckFileName(MyFile: string): string;
  175. var
  176.    i: byte;
  177.    isCorrect: boolean;
  178. begin
  179.    isCorrect := false;
  180.    i := 1;
  181.    while  not isCorrect and (i <= length(MyFile)) do
  182.    begin
  183.       if MyFile[i] = '.' then
  184.          isCorrect := true;
  185.       inc(i);
  186.    end;
  187.    if (not isCorrect) then
  188.       MyFile := MyFile + '.txt';
  189.    CheckFileName := MyFile;
  190. end;
  191.  
  192. procedure TStatkevich_Angelina_Lab3_1.Edit1Change(Sender: TObject);
  193. begin
  194.    if Edit1.Text <> '' then
  195.       Button1.Enabled := True
  196.    else
  197.       Button1.Enabled := False;
  198.    N3.Enabled := False;
  199.    Edit2.Text := '';
  200. end;
  201.  
  202. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement