
- •Курск - 2003
- •Интегрированная среда Delphi
- •Цель лабораторной работы
- •Информационные материалы
- •Главное окно
- •Окно редактора кода
- •Окно дерева объектов
- •Окно браузера
- •Лабораторная работа №2 Основы визуального программирования
- •Лабораторная работа №3 Линейные вычислительные процессы
- •Лабораторная работа №4 Итерационные вычислительные процессы
- •Лабораторная работа №5 Циклические вычислительные процессы
- •Лабораторная работа №6 Обработка строковых данных
- •Лабораторная работа №7 Обработка одномерных массивов
- •Лабораторная работа №8 Обработка матриц
- •Лабораторная работа № 9 Программирование операций с матрицами
- •Лабораторная работа №10 Программирование файловых операций
- •Лабораторная работа №11 Графические средства Delphi
- •Библиография
Лабораторная работа №6 Обработка строковых данных
Цель лабораторной работы
Целью лабораторной работы является приобретение практических навыков программирования функций обработки строковых данных.
Условия: в строке длиной L найти длину самого короткого слова.
Используемые компоненты и их свойства
№ |
Имя Компонента |
Настраиваемые свойства |
Значения |
Комментарии |
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. Тренировочные вопросы к защите:
В чем особенность компонента ТBitBtn?
Какие разновидности кнопок ТBitBtn имеются в Delphi?
Как определить разновидность кнопки BitBtn?
Сколько растровых изображений можно связать с кнопкой BitBtn?
Что понимается под независимым переключателем?
В каком свойстве компонента CheckBox содержится выбор пользователя?
Что означает состояние компонента CheckBox cbGrayed? cbChecked?
Свойства каких компонентов совмещает в себе компонент ComboBox ?
Какой вид имеет компонент ComboBox , если свойство Style = csSimple?
Какой вид имеет компонент ComboBox , если свойство Style = csDropDjwn?
При каком количестве компонентов списка ComboBox добавляется полоса прокрутки?
В каком свойстве компонент ComboBox хранит список выбора?