Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по теории.docx
Скачиваний:
4
Добавлен:
28.09.2019
Размер:
530.05 Кб
Скачать

Var //Раздел описаний подпрограммы

I:Integer;

Begin //Раздел операторов подпрограммы

t:=s[1];

For i:=2 To Length(s) Do

If (s[i]<>' ') Or

(s[i-1]<>' ') Then

t:=t+s[i];

t:=Trim(t);

End; //Конец подпрограммы

Var

X:String; //Раздел описаний основной программы

Begin //Раздел операторов основной программы

KillSpace(' Dog Cat ',x); //Вызов подпрограммы

WriteLn(x); //Вывод результата

ReadLn;

End.

Функциональные параметры разрешается употреблять и в качестве аргументов для передачи данных в п/п.

При написании подпрограмм можно пользоваться уже имеющимися подпрограммами, в том числе и функциями API (Application Programming Interface), которые находятся в библиотеках DLL.

program Examp4;

{$APPTYPE CONSOLE}

uses

Windows, SysUtils;

//-----------------------------------------

// Установка курсора по координатам X, Y

//-----------------------------------------

procedure GotoXY(X, Y: Word);

Var

Coord: TCoord; //Для установки позиции экрана (Windows)

begin

Coord.X := X;

Coord.Y := Y;

SetConsoleCursorPosition(

GetStdHandle(STD_OUTPUT_HANDLE), Coord); //(Функция API)

end;

Begin //Раздел операторов основной программы

GotoXY(10,20);

WriteLn('1234'); //Вывод результата

ReadLn;

End.

Билет №20: Оконные диалоги. Обработка ошибок

Диалог это подпрограмма, используемая для ввода или вывода данных

  • диалоги находятся в двух библиотеках Dialogs и Windows

  • диалоги имеют входные и выходные параметры

  • при вызове диалога появляется окно с изображением входных параметров

  • ввод (если он предусмотрен) осуществляется в специальной строке

  • окно закрывается нажатием кнопки на его поверхности

  • обычно диалоги являются функциями, имена которых возвращают важную информацию

Рассмотрим некоторые диалоги библиотеки Dialogs.

Функция InputBox(заголовок, текст, начальное значение): результат ввода

Все три параметра являются строковыми. Например, следующий вызов функции

S:=InputBox('Ввод','Введите целое число','3');

приведёт к появлению окна

В центре окна расположена строка ввода. Ввод завершается нажатием одной из кнопок. Результатом ввода служит строка, которая является значением функции.

Процедура ShowMessage('текст')

Выводит строку на экран, например,

ShowMessage('Вы ввели число 3')

организует следующее окно

Кнопка служит для закрытия окна.

Процедура ShowMessagePos('текст', X, Y)

Делает то же, размещая на экране окно по координатам (X, Y)

При работе с диалоговыми окнами проходится менять тип данных от строковых к числовым и наоборот. Это сопряжено с ошибками, которые завершаются аварийной остановкой программы. В Delphy существуют особые программные структуры, позволяющие «отловить» и обработать ошибку, не останавливая программы. Одна из них образует конструкцию с ключевыми словами

Try (попытка), Except (исключение), End (завершение)

Словом Try пишется перед тем фрагментом программы, в котором предполагается возникновение ошибки, а Except после него. Если ошибка произойдёт в одном из операторов между Try и Except, то управление будет передано секции между Except и End (это блок обработки ошибки). Затем программа продолжится от End.

Если ошибки не произойдёт, то по достижении Except управление перейдёт сразу к End.

program Dialog;

//==================================

//Использование оконного ввода/вывода

// Обработка ошибок

//==================================

{$APPTYPE CONSOLE}

uses

Dialogs, //Подключение оконных диалогов

//InputBox, ShowMessage, ShowMessagePos

SysUtils;

Var

S:String;

i:Integer;

begin

S:=InputBox('Ввод','Введите целое число',S);

Try //Готовимся к появлению ошибки

i:=StrToInt(S); //Здесь место возможной ошибки

ShowMessage('Вы ввели число '+IntToStr(i));

Except //Начало блока обработки ошибок

ShowMessage('Вы ввели не правильное данное');

End; //Конец блока

end.

Библиотека Windows содержит функцию

MessageBox(0, текст, заголовок, значки и кнопки): номер нажатой кнопки

Первым параметром является 0. Два других являются символьными массивами особого типа PChar. Последний параметр содержит двоичный код с информацией о размещении значков и кнопок в окне. Значением функции служит число с номером нажатой кнопки. Например, вызов функции с параметрами

i:=MessageBox(0, 'Нажмите одну из кнопок', 'Выбор варианта',

MB_ICONQUESTION+

MB_YESNOCANCEL+

MB_DEFBUTTON2);

образует окно

Включение иконки и набора кнопок с одной выделенной определяются значением последнего параметра.

Эта функция вернёт значение, соответствующее номеру нажатой кнопки.

Ниже приводится информация для задания параметров и анализа значения функции.

Кнопки:

MB_ABORTRETRYIGNORE - кнопки: Прервать, Повтор, Пропустить

MB_OK - кнопка: OK (по умолчанию)

MB_OKCANCEL - кнопки: OK, Отмена

MB_RETRYCANCEL - кнопки: Повтор, Отмена

MB_YESNO - кнопки: Да, Нет

MB_YESNOCANCEL - кнопки: Да, Нет, Отмена

Иконки:

MB_ICONHAND - крест в круге

MB_ICONSTOP

MB_ICONERROR

MB_ICONQUESTION - вопрос в круге

MB_ICONEXCLAMATION - восклицательный знак в треугольнике

MB_ICONWARNING

MB_ICONASTERISK - i в круге

MB_ICONINFORMATION

Выбор кнопки по умолчанию:

MB_DEFBUTTON1

...

MB_DEFBUTTON4

Возвращаемые значения:

IDOK = 1 - нажата кнопка OK

IDCANCEL = 2 - нажата кнопка Отмена

IDABORT = 3 - нажата кнопка Прервать

IDRETRY = 4 - нажата кнопка Повтор

IDIGNORE = 5 - нажата кнопка Пропустить

IDYES = 6 - нажата кнопка Да

IDNO = 7 - нажата кнопка Нет

Пример использования диалога.

program Wind;

{$APPTYPE CONSOLE}

uses

Windows, //Для использования диалога MessageBox

Dialogs,

SysUtils;

Var

S:String;

i:Integer;

begin

S:='Нажмите одну из кнопок';

i:=MessageBox(0, Pchar(S), 'Выбор варианта',

MB_ICONQUESTION+

MB_YESNOCANCEL+

MB_DEFBUTTON2);

ShowMessage('Результат '+IntToStr(i));

End.