Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типис.docx
Скачиваний:
10
Добавлен:
16.12.2018
Размер:
349.18 Кб
Скачать

Лабораторная работа № 7 Работа с текстом и рисованной таблицей

Цель работы: изучение основ работы с текстом и рисованной таблицей.

Содержание: разработка приложения для работы с текстом.

13. Вырезать, Копировать, Вставить. Текст вставлять в окно редактора Меmо, которое нужно поместить на форму. На форме поместить кнопку Слова. Вывести слова наибольшей длины.

unit Unit1;

interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, StdActns, ActnList, ComCtrls, ToolWin, ImgList,

ExtActns;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

help1: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

Memo1: TMemo;

PopupMenu1: TPopupMenu;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

N14: TMenuItem;

ActionList1: TActionList;

EditCut1: TEditCut;

EditCopy1: TEditCopy;

EditPaste1: TEditPaste;

EditSelectAll1: TEditSelectAll;

EditUndo1: TEditUndo;

EditDelete1: TEditDelete;

N15: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

FileOpen1: TFileOpen;

FileSaveAs1: TFileSaveAs;

FileExit1: TFileExit;

ImageList1: TImageList;

FontDialog1: TFontDialog;

N20: TMenuItem;

N21: TMenuItem;

FontDialog2: TFontDialog;

RichEditBold1: TRichEditBold;

Button1: TButton;

Memo2: TMemo;

procedure N3Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure ToolButton1Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Memo1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Math;

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);

begin

if OpenDialog1.Execute=true then

begin

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

if SaveDialog1.Execute=true then

begin

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

Application.MessageBox('Выполнила Тусова Александра -> Tu$','Текстовый редактор');

end;

procedure TForm1.N6Click(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Form1.Caption:='Тусова Александра -> Tu$';

end;

procedure TForm1.FormShow(Sender: TObject);

begin

Form1.Caption:='Тусова Александра -> Tu$';

end;

procedure TForm1.ToolButton1Click(Sender: TObject);

begin

if FontDialog1.execute=true then

begin

memo1.Font:=FontDialog1.Font;

end;

end;

procedure TForm1.N21Click(Sender: TObject);

begin

if fontdialog1.Execute=true then

begin

Memo1.Font:=FontDialog1.Font;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

const

//Множество разделителей слов.

D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];

var

S, StrW, StrWMax : String;

Q: array [1..100] of String;

i,j, k,Pos1, Len, LenW, LenWMax, Cnt,dlin,dlin_1 : Integer;

begin

//Исходный текст.

S := Memo1.Text;

//Поиск координат первого из самых длинных слов.

Len := Length(S);

LenWMax := 0;

StrWMax := '';

Cnt := 0;

Pos1 := 0;

k:=2;

for i := 1 to Len do begin

//Пропускаем разделители.

if S[i] in D then Continue;

//Отслеживаем начало слова.

if (i = 1) or (S[i - 1] in D) then Pos1 := i;

//Отслеживаем конец слова.

if (i = Len) or (S[i + 1] in D) then begin

//Вычисляем длину слова.

LenW := i - Pos1 + 1;

//Выделяем слово.

StrW := Copy(S, Pos1, LenW);

dlin:=length(StrW);

dlin_1:=length(StrWMax);

//Если слово совпадает с текущим наибольшим по длине, тогда увеличиваем счётчик.

if dlin= dlin_1 then

begin

Cnt := Cnt + 1;

//Добавляем в масив новые слова

Q[k]:=StrW;

k:=k+1;

end

else if LenW > LenWMax then begin

//Если это очередное слово длиннее всех ранее найденных слов, то

//запоминаем его, его длину и сбрасываем счётчик.

StrWMax := StrW;

LenWMax := LenW;

Cnt := 1;

//Обнуление масива

for j:=1 to k do

Q[j]:='';

Q[1]:=StrWMax;

k:=2;

// SetLength(Q,0);

end;

end;

end;

//Показываем результат.

if StrWMax <> '' then begin

ShowMessage(

'Количество самых длинных слов в тексе' + IntToStr(Cnt) + ' раз.'

);

// if k>2 then Memo2.Lines.add(StrWmax);

for i:=1 to k do begin

Memo2.Lines.add(Q[i]);

end;

end else begin

ShowMessage('В строке нет слов.');

end;

end;

procedure TForm1.Memo1Change(Sender: TObject);

begin

end;

end.