
лабораторная работа / лабораторные работы по LAZARUS / программированием алгоритмов с использованием строк № 4
.doc
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ
САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ
факультет: иженерно-строительный
кафедра: управление и информатика в технических системах
Лабораторная работа №4
по дисциплине: системное программное обеспечение
ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ
С ИСПОЛЬЗОВАНИЕМ СТРОК
Выполнил ст. гр. УИТ-32
Принял:
2005 г.
Цель лабораторной работы: освоить применение компонентов ListBox и СomboBox и создать приложение, в котором используются строки.
Задание создать Windows-приложение для подсчета количества слов в произвольной строке. Слова в строке разделяются любым количеством пробелов. Ввод строки заканчивать нажатием клавиши Enter. Работа приложения должна завершаться нажатием кнопки Close.
Ввести в компонент ComboBox:
-
Фамилия
-
Имя
-
Отчество
-
Домашний адрес
-
Дату рождения
Вывести выбранную строку и посчитать количество символов в ней.
Дополнительное задание: организовать процедуру замены строчных символов на заглавные в вводимых полях.
Программа:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function UpperCaseRus(const S: string): string;
{Не работает с ё,Ё,` и другими доп. символами - в учебных целях}
var
Ch: Char;
L: Integer;
Source, Dest: PChar;
begin
L := Length(S);
SetLength(Result, L);
Source := Pointer(S);
Dest := Pointer(Result);
while L <> 0 do
begin
Ch := Source^;
if (Ch > 'Z')and not((Ch>='А')and(Ch<='Я')) then Dec(Ch, 32);
Dest^ := Ch;
Inc(Source);
Inc(Dest);
Dec(L);
end;
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then // если нажата клавиша Enter то
begin // строка из поля редактирования заносится
ComboBox1.Items.Add(UpperCaseRus(ComboBox1.Text)); // в список выбора
ComboBox1.Text:=''; // очистка окна редактирования
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
ComboBox1.SetFocus;
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
var
st : string;
n,i,nst,ind: integer;
begin
n:=0; // n содержит количество слов
ind:=0;
nst:=ComboBox1.ItemIndex; // определение номера выбранной строки
st:=ComboBox1.Items[nst]; // st присваивается выбранная строка
for i:=1 to Length(st) do // просмотр всех символов строки
case ind of
0 : if st[i]<>' ' then // если встретился символ
begin
ind:=1;
n:=n+1; // количество слов увеличивается на единицу
end;
1 : if st[i]=' ' then // если встретился пробел
ind:=0;
end;
Label2.Caption:='Число слов в выделенной строке: '+IntToStr(n); // вывод количества слов в Label3
end;
Refresh;
end;
end.
Рабочее окно программы: