Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яву_кисо_delphi(1)(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

Лабораторная работа №6 Обработка строковых данных

  1. Цель лабораторной работы

Целью лабораторной работы является приобретение практических навыков программирования функций обработки строковых данных.

  1. Условия: в строке длиной L найти длину самого короткого слова.

  2. Используемые компоненты и их свойства

Имя

Компонента

Настраиваемые свойства

Значения

Комментарии

1

2

3

4

5

1

Form1

(форма)

Caption

Menu

OnActivate

(стр. Events)

String

MainMenu1

Form1Activate

Наименование формы

Главное меню формы

Событие формы

(возникает в момент ак-

тивизации формы, при получении ею фокуса ввода)

2

Label1

(метка)

Caption

Введите слова в строку

Надпись

3

Label3

(метка)

Caption

Выберите длину строки

Надпись

4

Label2

(метка)

Caption

Длина самого

короткого слова строки

Надпись

5

BitBtn1

(кнопка, Button)

Name

Caption

Glyph

OnClick

(стр. Events)

BitBtn1

Выход

{HEX-массив}

BitBtn1Click

Имя

Надпись

Растровое избражение на поверхности кнопки

Событие (щелчок)

6

BitBtn2

(кнопка, Button)

Name

Caption

Glyph

OnClick

(стр. Events)

BitBtn2

Поиск

{HEX-массив}

BitBtn2Click

Имя

Надпись

Растровое изображение на поверхности кнопки

Событие (щелчок)

7

Edit1

(одностро

чный

редактор)

Visible

False

Свойство позволяет спрятать или показать компонент(False-прячет, True-показывает)

1

2

3

4

5

8

CheckBox1

(независимый переключатель)

Caption

Вывести самое короткое слово

Содержит связанный с компонентом текст

9

ComboBox1

MaxLength

Text

Items

Style

OnChange

OnKeyPress

(стр. Events)

2

30

20 25 30 35

40 45 50 55

CsDropDown

Combo-

Box1Change

Combo-

Box1KeyPress

Максимальное число символов

Значение в поле вывода

Набор строк, показываемых в компоненте

Список закрыт, открывается после нажатия кнопки справа от редактора

Событие при изменении содержимого поля ComboBox1

Событие при нажатии алфавитно-цифровых клавиш

10

Button1

(кнопка)

Caption

OnClick

Очистка

Button1Click

Надпись

Событие (щелчок)

11

MainMenu1

(главное меню)

Name

MainMenu1

Имя компонента

Описание структуры меню и свойств см. лаб. раб. №4

Компонент ТBitBtn представляет собой разновидность стандартной кнопки ТButton. Ее отличительная особенность – свойство Glyph, с помощью которого определяется растровое изображение, рисуемое на поверхности кнопки. Стандартная пиктограмма определяется свойством Kind. Создаваемая пиктограмма – это растровое изображение 16×16пикселей. Создать можно в графическом редакторе в формате bmp.

Компонент CheckBox1 – независимый переключатель, используется для того чтобы указать свое решение типа да/нет или да/нет/не знаю (CbUnChecked –нет, CbChecked – да, CbGrayed – не совсем).

Компонент ComboBox1. Комбинированный список представляет собой комбинацию однострочного редактора Edit и списка выбор ListBox. Поэтому обладает свойствами каждого из них. Содержание списка выбора определяется свойством Items. Ввод осуществляется после двойного щелчка по данному свойству в инспекторе оъектов и реализуется в редакторе StringListEdit.

Вид комбинированного списка зависит от свойства Style. Если Style= CsDropDown, то список закрыт и открывается по щелчку кнопкой мыши справа от Edit. Начальное значение в окне компонента можно определить либо заполнив поле Text (как сделано в этом примере), либо указав индекс первого видимого в окне элемента, задав свойство TopIndex. Если Style= CsSimple, то список всегда раскрыт, окно компоненты должно иметь необходимые для размещения списка элементов размеры.

4.Форма задания

5.Текст программы.

unit UMain6;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Buttons, Menus;

type

TForm1 = class(TForm)

Label1: TLabel;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

Label2: TLabel;

Edit1: TEdit;

CheckBox1: TCheckBox;

MainMenu1: TMainMenu;

N1: TMenuItem;

MRun: TMenuItem;

N3: TMenuItem;

MClose: TMenuItem;

N5: TMenuItem;

MMes: TMenuItem;

ComboBox1: TComboBox;

Label3: TLabel;

Shape1: TShape;

Button1: TButton;

procedure FormActivate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure MMesClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

Const

mes='Длина самого короткого слова строки : ';

var

L:integer;

procedure TForm1.FormActivate(Sender: TObject);

var

i : integer;

begin

L:=30;

Edit1.MaxLength:=L-2;

Sleep(5);

Label2.Caption:=mes;

Edit1.Visible:=True;

for i:=1 to 60 do

begin

Edit1.Width:=i*4;

Sleep(5);

end;

Edit1.SetFocus;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var

i : integer;

p : integer;

d : integer;

min : integer;

st : string[50];

S : array[1..10] of String[10];

begin

st:=Edit1.Text;

i:=1;

p:=1;

While p > 0 do

begin

p:=pos(' ',st);

S[i]:=copy(st,1,p);

delete(st,1,p);

i:=i+1;

end;

d:=i-1;

S[d]:= st;

min:=1;

for i:=2 to d do

if Length(S[i]) < Length(S[min]) then min:=i;

Label2.Caption:=mes+' => '+IntToStr(Length(S[min])-1);

if CheckBox1.Checked

then ShowMessage(S[min]);

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

L := StrToInt(ComboBox1.Text);

Edit1.Width:=L*8;

Edit1.MaxLength:=L-2;

end;

procedure TForm1.MMesClick(Sender: TObject);

begin

ShowMessage('В строке длиной L найти длину самого короткого слова !');

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit1.Text:='';

end;

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

case Key of

'0'..'9':;

else Key:=Chr(0);

end;

end;

end.

6. Комментарии к тексту программы

Процедуры, входящие в описание класса TForm1, выполняют следующие действия.

Процедура FormActivate реализует действия при активизации формы (при получении ею фокуса ввода).

При этом выводится на экран сообщение, определенное константой mes. Свойству Visible Edit1 присваивается значение true. В цикле по i реализуется постепенное разворачивание компоненты Edit1 до максимальной длины. По завершению действий компонент Edit1 получает фокус ввода. Длина строки по умолчанию равна 30.

Процедура BitBtn1Click закрывает форму Form1.

Процедура ComboBox1Change вызывается для выполнения при изменении содержимого окна компонента. При этом переменной L присваивается новое значение. (L:= StrToInt (ComboBox1Text)). Ширина Edit1 устанавливается в соответствии с новым значением L.

Процедура MMesClick выводит сообщение на форму с условиями задания. Активизируется эта процедура при выборе опции пункта меню Помощь.

Процедура Button1Click очищает поле ввода компоненты Edit1.

Процедура ComboBox1KeyPress активизируется при вводе в окно ComboBox1 нового значения (если нет нужного значения в списке). При этом разрешается ввод только цифр (см. оператор case kye of, в котором формат ввода определен ‘0’..’9’:).

Процедура BitBtn2Click реализует условия, определенные заданием. В цикле с параметром Р реализуется поиск пробела (разделитель слов).

При нахождении в массив строк помещается найденное слово, а из исходной строки это слово удаляется. Затем просматривается сформированный массив строк с целью определения наименьшего из них. В завершении определяется состояние переключателя CheckBox1. Если Checkеd= true, то выводится сообщение ShowMessage (S[min]) о минимальном слове.

7. Содержание отчета

  • задание;

  • описание свойств используемых компонентов и форм;

  • текст программы с комментариями;

  • результаты вычесления.

8. Тренировочные вопросы к защите:

  1. В чем особенность компонента ТBitBtn?

  2. Какие разновидности кнопок ТBitBtn имеются в Delphi?

  3. Как определить разновидность кнопки BitBtn?

  4. Сколько растровых изображений можно связать с кнопкой BitBtn?

  5. Что понимается под независимым переключателем?

  6. В каком свойстве компонента CheckBox содержится выбор пользователя?

  7. Что означает состояние компонента CheckBox cbGrayed? cbChecked?

  8. Свойства каких компонентов совмещает в себе компонент ComboBox ?

  9. Какой вид имеет компонент ComboBox , если свойство Style = csSimple?

  10. Какой вид имеет компонент ComboBox , если свойство Style = csDropDjwn?

  11. При каком количестве компонентов списка ComboBox добавляется полоса прокрутки?

  12. В каком свойстве компонент ComboBox хранит список выбора?