Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unit Main;
- Interface
- Uses
- Winapi.Windows,
- Winapi.Messages,
- System.SysUtils,
- System.Variants,
- System.Classes,
- Vcl.Graphics,
- Clipbrd,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.StdCtrls,
- Vcl.Menus,
- Vcl.ExtCtrls,
- Vcl.Imaging.Pngimage,
- Vcl.Imaging.Jpeg;
- Type
- TMainForm = Class(TForm)
- Button1: TButton;
- EditA: TEdit;
- Memo1: TMemo;
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- N3: TMenuItem;
- N4: TMenuItem;
- N5: TMenuItem;
- Y1: TLabel;
- BalloonHint1: TBalloonHint;
- OpenDialog1: TOpenDialog;
- SaveDialog1: TSaveDialog;
- Label1: TLabel;
- Label2: TLabel;
- Procedure Button1Click(Sender: TObject);
- Procedure N2Click(Sender: TObject);
- Procedure N5Click(Sender: TObject);
- Procedure N3Click(Sender: TObject);
- Procedure GetPath(Var Path: String);
- Procedure N4Click(Sender: TObject);
- Procedure N1Click(Sender: TObject);
- Procedure EditAChange(Sender: TObject);
- Procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
- Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
- Procedure FormMouseEnter(Sender: TObject);
- procedure EditAKeyPress(Sender: TObject; var Key: Char);
- Private
- { Private declarations }
- Public
- { Public declarations }
- End;
- Var
- MainForm: TMainForm;
- Implementation
- {$R *.dfm}
- Uses
- Instruction,
- Information;
- {Function CountVowels(Const Word: String; Vowel1, Vowel2: Char): Integer;
- Var
- CharIndex, Count: Integer;
- Begin
- Count := 0;
- For CharIndex := 1 To Length(Word) Do
- Begin
- If (Word[CharIndex] = Vowel1) Or (Word[CharIndex] = Vowel2) Then
- Inc(Count);
- End;
- Result := Count;
- End;}
- function MinWordLen(const Text: string; var IndexBegin: Integer): string;
- var
- MinWord, Word: string;
- Index, I: Integer;
- CheckPr: Boolean;
- begin
- MinWord := Text;
- Word := '';
- Index := 1;
- for I := 1 to Length(Text) do
- begin
- CheckPr := False;
- if Text[I] = ' ' then
- begin
- CheckPr := True;
- Word := Copy(Text, Index, I - Index);
- end;
- if I = Length(Text) then
- begin
- Word := Copy(Text, Index, I - Index + 1);
- end;
- if (Length(MinWord) > Length(Word)) and (Length(Word) <> 0) then
- begin
- IndexBegin := Index;
- MinWord := Word;
- end;
- if CheckPr = True then
- begin
- Index := I + 1;
- end;
- end;
- Result := MinWord;
- end;
- procedure TMainForm.Button1Click(Sender: TObject);
- var
- ResultText, Text: String;
- MinWord: String;
- IndexBegin: Integer;
- begin
- Text := EditA.Text;
- if Text <> '' then
- begin
- MinWord := MinWordLen(Text, IndexBegin);
- if MinWord <> '' then
- ResultText := 'В заданном предложении самое короткое слово: "' + MinWord + '", начиная с позиции: ' + IntToStr(IndexBegin)
- else
- ResultText := 'В предложении отсутствуют слова';
- Memo1.Lines.Clear;
- Memo1.Lines.Add(ResultText);
- end
- else
- ShowMessage('Окно ввода пустое. Повторите попытку.');
- end;
- procedure TMainForm.EditAKeyPress(Sender: TObject; var Key: Char);
- begin
- if (Key in ['0'..'9', ',', '.', '-', #13]) then
- begin
- Key := #0;
- ShowMessage('Недопустимый символ');
- end;
- end;
- procedure TMainForm.EditAChange(Sender: TObject);
- begin
- if Length(EditA.Text) = 0 then
- Memo1.Lines.Clear;
- end;
- Procedure TMainForm.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
- Var
- Confirmation: Integer;
- Begin
- Confirmation := Application.MessageBox('Вы уверены, что хотите выйти?', 'Выход', MB_YESNO);
- CanClose := Confirmation = IDYES;
- End;
- Procedure TMainForm.FormMouseEnter(Sender: TObject);
- Begin
- ClipBoard.Clear;
- End;
- Procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
- Begin
- If EditA.Text <> '' Then
- Button1.Enabled := True
- Else
- Button1.Enabled := False;
- End;
- Procedure TMainForm.N1Click(Sender: TObject);
- Begin
- If Memo1.Lines.Count = 0 Then
- Begin
- N4.Enabled := False;
- End
- Else
- Begin
- N4.Enabled := True;
- End;
- End;
- Procedure TMainForm.N2Click(Sender: TObject);
- Begin
- InstructionForm.ShowModal;
- End;
- Procedure TMainForm.GetPath(Var Path: String);
- Begin
- If OpenDialog1.Execute Then
- Begin
- Path := OpenDialog1.FileName;
- End
- Else
- Begin
- ShowMessage('Открытие файла отменено.');
- Abort;
- End;
- End;
- Procedure TMainForm.N3Click(Sender: TObject);
- Var
- IsCorrect, Fail: Boolean;
- Path, Errors, A, B, Str: String;
- Count: Integer;
- FileElem: TextFile;
- FileStream: TFileStream;
- Begin
- GetPath(Path);
- AssignFile(FileElem, Path);
- Fail := False;
- IsCorrect := True;
- Count := 0;
- If Path = '' Then
- IsCorrect := False;
- If IsCorrect Then
- Try
- FileStream := TFileStream.Create(Path, FmOpenRead Or FmShareDenyNone);
- Try
- //Файл успешно открыт - добавьте код для работы с открытым файлом
- Reset(FileElem);
- ShowMessage('Файл успешно открыт.');
- Finally
- FileStream.Free;
- End;
- Except
- On E: EInOutError Do
- Begin
- If E.ErrorCode = 103 Then
- Begin
- IsCorrect := False;
- //Ошибка I/O с кодом 103 - файл занят или недоступен
- ShowMessage('Ошибка I/O (код 103): Файл занят или недоступен.' + #13#10 + 'Проверьте файл и повторите попытку.');
- End
- Else
- Begin
- IsCorrect := False;
- //Другая ошибка I/O - выводим сообщение об ошибке
- ShowMessage('Ошибка I/O: ' + E.Message);
- If E.Message = 'I/O error 32' Then
- ShowMessage('Файл используется в нескольких процессах' + #13#10 + 'Проверьте файл и повторите попытку.');
- End;
- End;
- On E: Exception Do
- Begin
- //Другие исключения - выводим сообщение об ошибке
- ShowMessage('Ошибка: ' + E.Message + #13#10 + 'Проверьте файл и повторите попытку.');
- IsCorrect := False;
- End;
- End;
- If IsCorrect = True Then
- Begin
- Try
- Try
- Reset(FileElem);
- Except
- CloseFile(FileElem);
- IsCorrect := False;
- ShowMessage('Ошибка открытия файла.');
- End;
- If IsCorrect Then
- Begin
- While Not Eof(FileElem) Do
- Begin
- ReadLn(FileElem, Str);
- Inc(Count);
- End;
- CloseFile(FileElem);
- If Count <> 1 Then
- Fail := True;
- End;
- If IsCorrect Then
- Begin
- Reset(FileElem);
- Try
- Readln(FileElem, A);
- Except
- Fail := True;
- End;
- End;
- Finally
- CloseFile(FileElem);
- ShowMessage('Импорт завершен.');
- End;
- If Length(A) > 50 Then
- Fail := True;
- Errors := 'Некорректные данные файла! Проверьте данные и повторите попытку.';
- If Fail = True Then
- Begin
- ShowMessage(Errors);
- End;
- If Fail = False Then
- EditA.Text := A;
- End;
- End;
- Procedure TMainForm.N4Click(Sender: TObject);
- Begin
- If SaveDialog1.Execute Then
- Begin
- Memo1.Lines.SaveToFile(SaveDialog1.FileName);
- ShowMessage('Сохранение завершено.');
- End
- Else
- Begin
- ShowMessage('Сохранение в файл отменено.');
- End;
- End;
- Procedure TMainForm.N5Click(Sender: TObject);
- Begin
- InformationForm.ShowModal;
- End;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement