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

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

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

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

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

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


    Скачать 1.39 Mb.
    НазваниеПрактикум по дисциплине Разработка приложений в визуальных средах для студентов специальностей
    Анкорфывфыв
    Дата24.03.2021
    Размер1.39 Mb.
    Формат файлаdoc
    Имя файлаLaboratorny_praktikum_chast1_Elektronny_ebntu.doc
    ТипПрактикум
    #187875
    страница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
    Компонент TListBox представляет собой список, элементы которого выбираются при помощи клавиатуры или мыши. Список элементов задается свойством Items, методы Add, Delete и Insert которого используются для добавления, удаления и вставки строк. Объект Items (TString) хранит строки, находящиеся в списке. Для определения номера выделенного элемента используется свойство ItemIndex.
    1.3. Компонент TComboBox
    Комбинированный список 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;
    end.

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


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