Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

Лабораторная работа 25. Строковый редактор

1. Что такое «строковый редактор»

Строковый редактор - это программа (процедура), которая позволяет редактировать строку текста на экране дисплея стандартными средствами - клавишами:

i j k l m n u h.

При этом строка откуда-то берется (файл, массив) и где-то сохраняется после редактирования.

Данная лабораторная работа предназначена для того, чтобы разработать такой редактор не как отдельную программу, а как универсальную процедуру, которая может быть использована любой программой на языке Pascal.

2. Зачем писать строковый редактор

Практически никогда при написании диалога в прикладных программах не используются стандартные процедуры ввода данных READ и READLN. Это связано с тем, что:

а) эти процедуры не контролируют границы ввода в строке. Даже использование стандартной процедуры WINDOW(х1,y1,x2,y2) из библиотеки Crt не спасает положения, так как при ее использовании все равно происходит автоматический переход на новую строку при наборе данных;

б) отсутствует оперативный контроль за тем, что набирает пользователь. Например, естественным контролем за вводом чисел является запрет набора символов, отличных от цифр, знаков плюс (+) или минус (-) и десятичного разделителя (точки или запятой).

3. Несколько вспомогательных задач

Задание 1

Составьте программу (процедуру), которая обеспечивает ввод данных в строковую переменную с помощью функции ReadKey. Программа должна заканчивать работу при нажатии "несимвольной клавиши" (функциональной или управляющей, т.е. такой, которая дает двойной код или код меньше 32).

Подсказка

Особенность в том, что при работе ReadKey нет ЭХОПЕЧАТИ (при нажатии на любую клавишу на экране ничего не появляется). Именно поэтому следует организовать и эхопечать на экране, и "доклеивание" очередного символа в строку, хранящуюся в переменной.

Задание 2

Модифицируйте процедуру, реализованную в задании 1, так, чтобы она, помимо ввода, позволяла удалять последний введенный символ с помощью клавиши BackSpace (ЗАБОЙ) (код клавиши BS=#8).

4. Постановка задачи на разработку

Итак, требуется разработать процедуру (функцию), обеспечивающую вывод, редактирование, контроль данных при вводе и возврат в вызывающую программу (процедуру или функцию) строки с результатами редактирования. Общий вид заголовка процедуры может иметь следующий вид:

{ процедура редактирования строки }

Procedure editor(x1, x2, y : byte; f : boolean; setchar: set of char; var c:char; var st:st80);

где параметры:

x1

-

координата самого левого символа;

x2

-

координата самого правого символа;

y

-

координата строки;

f

-

признак вывода входного значения строки на экран (если true - выводить для ре­дак­ти­ро­ва­ния, если false - редактировать пустую строку);

setchar

-

множество допустимых символов. Здесь setchar описан в блоке

Type setchar=set of char;

c

-

символ с кодом клавиши, по которой завершает работу строковый редактор;

st

-

возвращаемая строка.

Тип st80 описывается в блоке Type как st80=string[80]. Константы, которые могут понадобиться в процедуре:

const

right = #77; left = #75; up = #72; ins = #82; del = #83;

enter = #13; bs = #8; down = #80; esc = #27;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]