Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать компонент типа ТСоmbоВох. Ввод строки заканчивать нажатием Enter. Для выхода из программы использовать кнопку Close.
Форма приложения приведена на рисунке 5.1.
Рисунок 5.1 – Форма приложения
Текст программы:
Unit LabRab_5;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TUnit_Lab5 = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn1: TBitBtn;
Button1: TButton;
Procedure FormActivate(Sender: TObject);
Procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
Procedure ComboBox1Click(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
end;
var
Unit_Lab5: TUnit_Lab5;
Implementation
{$R *.dfm}
// Обработка события активизации формы
Procedure TUnit_Lab5.FormActivate(Sender: TObject);
begin
ComboBox1.SetFocus; //Передача фокуса ComboBox1
end;
// Обработка события нажатия левой клавиши мыши
Procedure TUnit_Lab5.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if Key =#13 then //Если нажата клавиша Enter то...
begin
// Строка из окна редактирования заносится в список выборa
|
|
ComboBox1.Items.Add(ComboBox1.Text);
ComboBox1.Text:= ''; //Очистка окна редактирования
end;
end;
Procedure TUnit_Lab5.ComboBox1Click(Sender: TObject);
var
St: string;
n, i, nst, ind: integer;
begin
n:= 0; //Содержит число слов выбранной строки
ind:= 0; //Содержит число слов
//Определение номера выбранной строки
nSt:= ComboBox1.ItemIndex;
//Занесение выбранной строки в переменную st
St:= ComboBox1.Items[nst];
//Просмотр всех символов строки st
for i:= 1 to Length(St) do
begin
Case ind of
0: if St[i] <>'' then
begin
//Если встретился символ после пробела
//число слов увеличивается на единицу
ind:= 1;
inc(n);
end;
// Если встретился пробел после символов
1: if St[i] ='' then ind:= 0;
end; //Case
Label3.Caption:= IntToStr(n); //Вывод числа слов в Label3
end;
end.