Главная страница
Навигация по странице:

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

  • 1.1. Типы данных для работы со строками

  • Длинная строка типа

  • Широкая строка типа

  • Нуль-терминальная строка типа

  • 1.2. Компонент

  • Компонент

  • 1.4. Компонент

  • 1.5. Обработка событий

  • 1.6. Пример выполнения задания

  • Лабораторная. Лабораторный практикум(часть1) Электронный. Практикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей


    Скачать 3.27 Mb.
    НазваниеПрактикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей
    АнкорЛабораторная
    Дата12.03.2023
    Размер3.27 Mb.
    Формат файлаdoc
    Имя файлаЛабораторный практикум(часть1) Электронный.doc
    ТипПрактикум
    #982312
    страница9 из 24
    1   ...   5   6   7   8   9   10   11   12   ...   24

    ЛАБОРАТОРНАЯ РАБОТА 5

    Разработка приложения обработки строковой информации




    Цель лабораторной работы:изучить методы программирования с использованием строк и правила работы с компонентами TListBox и TComboBox. Написать программу работы со строками.

    1. Краткие сведения



    1.1. Типы данных для работы со строками
    Короткие строки типа ShortString и String[N]

    Короткие строки имеют фиксированное количество символов. Строка ShortString может содержать 255 символов. Строка String[N] может содержать N символов, но не более 255. Первый байт этих переменных содержит длину строки.
    Длинная строка типа String

    При работе с этим типом данных память выделяется по мере необходимости (динамически) и может занимать всю доступную программе память. Вначале компилятор выделяет для переменной 4 байта, в которых размещается номер ячейки памяти, начиная с которой будет располагаться символьная строка. На этапе выполнения программа определяет необходимую длину цепочки символов и обращается к ядру операционной системы с требованием выделить необходимую память.

    Процедуры и функции для работы с короткими и длинными строками представлены в приложении.
    Широкая строка типа WideString

    Введена для обеспечения совместимости с компонентами, основанными на OLE-технологии. От типа String отличается только тем, что для представления каждого символа используется не один, а два байта.
    Нуль-терминальная строка типа PСhar

    Представляет собой цепочку символов, ограниченную символом #0. Максимальная длина строки ограничена только доступной программе памятью. Нуль-терминальные строки широко используются при обращениях к API-функциям Windows (API - ApplicationProgramInterface - интерфейс прикладных программ).
    Представление строки в виде массива символов

    Строка может быть описана как массив символов. Если массив имеет нулевую границу, он совместим с типом PChar.

    Var

    MasS : array[1..100] of Char;

    В отличие от нуль-терминальной строки здесь длина имеет фиксированное значение и не может меняться в процессе выполнения программы.
    1.2. Компонент TListBox
    Компонент расположен на странице Standart палитры компонентов

    Компонент TListBox представляет собой список, элементы которого выбираются при помощи клавиатуры или мыши. Список элементов задается свойством Items, методы Add, Delete и Insert которого используются для добавления, удаления и вставки строк. Объект Items (TString) хранит строки, находящиеся в списке. Для определения номера выделенного элемента используется свойство ItemIndex.


      1. Компонент TComboBox


    Компонент расположен на странице Standart палитры компонентов.

    Комбинированный список TComboBox представляет собой комбинацию списка TListBox и редактора TEdit, поэтому практически все свойства заимствованы у этих компонентов. Для работы с окном редактирования используется свойство Text как в TEdit, а для работы со списком выбора - свойство Items как в TListBox. Существует. Пять модификаций компонента, определяемых его свойством Style. В модификации csSimple список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора.
    1.4. Компонент TBitBtn
    Компонент TBitBtn расположен на странице Additional палитры компонентов и представляет собой разновидность стандартной кнопки TButton. Его отличительная особенность - наличие растрового изображения на поверхности кнопки, которое определяется свойством Glyph. Кроме того, имеется свойство Kind, которое задает одну из 11 стандартных разновидностей кнопок. Нажатие любой из них, кроме bkCustom и bkHelp закрывает модальное окно и возвращает в программу результат mr*** (например, bkOk - mrOk). Кнопка bkClose закрывает главное окно и завершает работу npoграммы.
    1.5. Обработка событий
    Обо всех происходящих в системе событиях таких, как создание формы, нажатие кнопки мыши или клавиатуры и т. д., ядро Windowsинформирует окна путем посылки соответствующих сообщений. Среда Delphi позволяет принимать и обрабатывать большинство таких сообщений. Каждый компонент содержит обработчики сообщений на странице Events инспектора объектов.

    Для создания обработчика события необходимо раскрыть список компонентов в верхней части окна инспектора объектов и выбрать необходимый компонент. Затем, на странице Events, нажатием левой клавиши мыши выбрать обработчик и дважды щелкнуть по его левой (белой) части. В ответ Delphi активизирует окно текста программы и покажет заготовку процедуры обработки выбранного события.

    Каждый компонент имеет свой набор обработчиков событий, однако некоторые из них присущи большинству компонентов. Наиболее часто применяемые события представлены в таблице 1.1.

    Таблица 1.1 – Наиболее часто генерируемые события

    Событие

    Описание события

    OnActivate

    Возникает при активации формы

    OnCreate

    Возникает при создании формы (компонент TForm). В обработчике данного события следует задавать действия, которые должны происходить в момент создания формы, например установка начальных значений

    OnKeyPress

    Возникает при нажатии кнопки на клавиатуре. Параметр Key имеет тип Char и содержит ASCII-код нажатой клавиши (клавиша Enter клавиатуры имеет код #13, клавиша Esc - #27 и т.д.). Обычно это событие используется в том случае, когда необходима реакция на нажатие одной из клавиш

    OnKeyDown

    Возникает при нажатии клавиши на клавиатуре. Обработчик этого события получает информацию о нажатой клавише и состоянии клавиш Shift, Alt и Ctrl, а также о нажатой кнопке мыши. Информация о клавише передается параметром Key, который имеет тип Word

    OnKeyUp

    Является парным событием для OnKeyDown и возникает при отпускании ранее нажатой клавиши

    OnClick

    Возникает при нажатии кнопки мыши в области компонента

    OnDblClick

    Возникает при двойном нажатии кнопки мыши в области компонента


    1.6. Пример выполнения задания
    Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать компонент типа ТСо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;

    Label3.Caption := IntToStr(n); //Вывод числа слов в Label3

    end;
    end.


    1   ...   5   6   7   8   9   10   11   12   ...   24


    написать администратору сайта