Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Laba4_2;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.Buttons;
- type
- TForm1 = class(TForm)
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- N5: TMenuItem;
- N6: TMenuItem;
- N3: TMenuItem;
- N4: TMenuItem;
- SaveDialog1: TSaveDialog;
- OpenDialog1: TOpenDialog;
- Label1: TLabel;
- EditOfText: TEdit;
- CalculateButton: TBitBtn;
- LabelText: TLabel;
- LabelOfResult: TLabel;
- procedure N1Click(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure N3Click(Sender: TObject);
- procedure N4Click(Sender: TObject);
- procedure EditOfTextChange(Sender: TObject);
- procedure EditOfTextKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure EditOfTextKeyPress(Sender: TObject; var Key: Char);
- procedure N6Click(Sender: TObject);
- procedure N5Click(Sender: TObject);
- function checkFile(path: string) : boolean;
- procedure CalculateButtonClick(Sender: TObject);
- procedure changeString (str : String);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.EditOfTextChange(Sender: TObject);
- begin
- N6.Enabled := false;
- Form1.ClientHeight := 108;
- LabelText.Caption := '';
- LabelOfResult.Caption := '';
- if EditOfText.Text <> '' then
- CalculateButton.Enabled := true
- else
- CalculateButton.Enabled := false;
- end;
- procedure TForm1.EditOfTextKeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if ((Key = ord('V')) and (ssCtrl in Shift)) or (Key = vk_insert) then
- key := 0;
- end;
- procedure TForm1.EditOfTextKeyPress(Sender: TObject; var Key: Char);
- begin
- if NOT (Key in ['A','B','C',#8]) then
- Key:=#0
- end;
- procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- begin
- if MessageDlg('Вы действительно хотите выйти?',mtConfirmation,[mbYes,mbNo], 0) = mrYes then
- CanClose := true
- else
- CanClose := false;
- end;
- procedure TForm1.N1Click(Sender: TObject);
- begin
- MessageDlg('Строка символов состоит из букв А, В и С.' + #13#10 + 'Разработать рекурсивную процедуру, преобразующую данную строку по правилам:' + #13#10 + 'а) удаляет четыре подряд идущих букв А;' + #13#10 + 'б) удаляет из последовательности ВАВА одну пару ВА;' + #13#10 + 'в) удаляет комбинацию АВС.' + #13#10 + 'Преобразования выполнять до тех пор, пока ни одной из перечисленных комбинаций не останется.', mtInformation, [mbOK], 0)
- end;
- procedure TForm1.N3Click(Sender: TObject);
- begin
- MessageDlg('Ввод текста' + #13#10 + #13#10 + 'Длина текста не должна превышать 20 символов.' + #13#10 + 'Строка не должна состоять только из пробелов', mtInformation, [mbOK], 0)
- end;
- procedure TForm1.N4Click(Sender: TObject);
- begin
- Form1.Close;
- end;
- procedure TForm1.changeString (str : String);
- begin
- if Pos('AAAA',str) <> 0 then
- begin
- Delete(str,Pos('AAAA',str),4);
- changeString (str);
- end
- else if Pos('BABA',str) <> 0 then
- begin
- Delete(str,Pos('BABA',str),2);
- changeString (str);
- end
- else if Pos('ABC',str) <> 0 then
- begin
- Delete(str,Pos('ABC',str),3);
- changeString (str);
- end
- else if length(str) = 0 then
- LabelText.Caption := 'Строка пуста'
- else
- begin
- LabelText.Caption := 'Строка после преобразований имеет вид:';
- LabelOfResult.Caption := str;
- end;
- end;
- procedure TForm1.CalculateButtonClick(Sender: TObject);
- var
- str : String;
- begin
- str := EditOfText.Text;
- changeString(str);
- Form1.ClientHeight := 155;
- N6.Enabled := true;
- end;
- function TForm1.checkFile(path: string) : boolean;
- var
- myFile: TextFile;
- temp,temp2 : String;
- isCorrect : boolean;
- i : integer;
- begin
- isCorrect := True;
- try
- AssignFile(myFile, path);
- Reset(myFile);
- except
- isCorrect := False;
- MessageDlg('Ошибка доступа к файлу с записями. Измените атрибуты в свойствах файла', mtError, [mbOK], 0);
- end;
- if isCorrect and seekEOF(MyFile) then
- Begin
- isCorrect := False;
- MessageDlg('Файл пуст. Выберите другой файл или введите данные вручную', mtError, [mbOK], 0);
- End;
- if isCorrect then
- begin
- read(myFile,temp);
- if length(temp) > 20 then
- begin
- isCorrect := false;
- MessageDlg('Данные в файле некорректны. Выберите другой файл или введите данные вручную', mtError, [mbOK], 0);
- end;
- i := 1;
- while IsCorrect and (i < length(temp)) do
- begin
- if (temp[i] <> 'A') and (temp[i] <> 'B') and (temp[i] <> 'C') then
- begin
- IsCorrect := false;
- MessageDlg('Данные в файле некорректны. Выберите другой файл или введите данные вручную', mtError, [mbOK], 0);
- end;
- inc(i);
- end;
- end;
- closeFile(myFile);
- checkFile := isCorrect;
- End;
- procedure TForm1.N5Click(Sender: TObject);
- var
- myFile: TextFile;
- str : String;
- isCorrect : boolean;
- begin
- LabelText.Caption := '';
- LabelOfResult.Caption := '';
- EditOfText.Text := '';
- if OpenDialog1.Execute then
- begin
- isCorrect := checkFile(OpenDialog1.FileName);
- if isCorrect then
- Begin
- AssignFile(myFile, OpenDialog1.FileName);
- Reset(myFile);
- Readln(myFile, str);
- EditOfText.Text := str;
- End;
- end;
- end;
- procedure TForm1.N6Click(Sender: TObject);
- var
- myFile: TextFile;
- isCorrect : boolean;
- begin
- isCorrect := true;
- if SaveDialog1.Execute then
- begin
- try
- AssignFile(myFile, SaveDialog1.FileName);
- Rewrite(myFile);
- except
- isCorrect := False;
- MessageDlg('Ошибка доступа к файлу с записями. Измените атрибуты в свойствах файла', mtError, [mbOK], 0);
- end;
- if isCorrect then
- begin
- write(MyFile,LabelText.Caption + LabelOfResult.Caption);
- MessageDlg('Данные записаны в файл', mtInformation, [mbOK], 0);
- closeFile(myFile);
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement