Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L08.DOC
Скачиваний:
2
Добавлен:
15.07.2019
Размер:
83.46 Кб
Скачать

Открытые массивы

var

B: array[3..7] of double;

procedure P(var A: array of double);

begin

WriteLN('High(A)=', High(A), ' A[High(A)[=', A[High(A)]:0:2);

WriteLN('Low(A)=', Low(A), ' A[Low(A)[=', A[Low(A)]:0:2);

ReadLN;

end;

begin

B[3] := 3; B[4] := 4; B[5] := 5; B[6] := 6; B[7] := 7;

P(B);

end.

Ключи компиляции (директивы компилятора)

Ключ компиляции задает режим компиляции программы. Этот режим управляет синтаксическими требованиями к исходному тексту программы, а также поведением откомпилированного кода программы.

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

Ключ является локальным, если в модуле он может присутствовать во многих местах. Режим, задаваемый локальным ключом, действует на тот участок кода, который предшествует прямо противоположному ключу.

Выравнивание полей записей и классов

{$A+}, {$A-}, {$A1}, {$A2}, {$A4}, or {$A8}

или

{$ALIGN ON}, {$ALIGN OFF}, {$ALIGN 1}, {$ALIGN 2}, {$ALIGN 4},

or {$ALIGN 8}

По умолчанию:

{$A8}

или

{$ALIGN 8}

Зона действия: Локальный

Полное вычисление логических выражений

{$B+} or {$B-}

или

{$BOOLEVAL ON} or {$BOOLEVAL OFF}

По умолчанию:

{$B-}

или

{$BOOLEVAL OFF}

Зона действия: Локальный

Пример

x := 3;

{$B-}

if

(x > 4) // Вычисляется

and

(x < 5) // НЕ вычисляется

then . . . ;

Использование длинных строк (AnsiString)

{$H+} or {$H-}

или

{$LONGSTRINGS ON} or {$LONGSTRINGS OFF}

По умолчанию:

{$H+}

или

{$LONGSTRINGS ON}

Зона действия: Локальный

Проверка результата ввода-вывода

{$I+} or {$I-}

или

{$IOCHECKS ON} or {$IOCHECKS OFF}

По умолчанию:

{$I+}

или {$IOCHECKS ON}

Зона действия: Локальный

Разрешение использовать типизированные константы как переменные

{$J+} or {$J-}

или

{$WRITEABLECONST ON} or {$WRITEABLECONST OFF}

По умолчанию:

{$J-}

или

{$WRITEABLECONST OFF}

Зона действия: Локальный

Генерация информации о текущих типах полей, методов, свойств, объявленных в секции Published (RTTI, RunTime Type Information)

{$M+} or {$M-}

или

{$TYPEINFO ON} or {$TYPEINFO OFF}

По умолчанию:

{$M-}

или

{$TYPEINFO OFF}

Зона действия: Локальный

Если класс объявлен в режиме {$M-}, или не является потомком класса, объявленного в режиме {$M+}, секция Published запрещена.

Задание размера стека

{$M <Число: Мин. размер стека>, < Число: Макс. размер стека>}

или

{$MINSTACKSIZE <Число>}

{$MAXSTACKSIZE <Число>}

По умолчанию:

{$M 16384, 1048576}

Зона действия: Глобальный

1024 <Число: Мин. размер стека> 2147483647

<Число: Мин. размер стека> <Число: Макс. размер стека> 2147483647

Проверка выхода за пределы диапазона

{$R+} or {$R-}

или

{$RANGECHECKS ON} or {$RANGECHECKS OFF}

По умолчанию:

{$R-}

или

{$RANGECHECKS OFF}

Зона действия: Локальный

Пример. TP7

uses crt;

var

i: integer; mA: array[1..10] of longint; mB: array[1..10] of longint;

begin

clrscr;

for i := 1 to 10 do begin mA[i] := 0; mB[i] := 0; end;

{$R-}

i := 12;

mA[i] := -7;

writeln(mA[i]); // -7

writeln(mB[2]); // -7

{$R+}

mA[i] := -7; // RunTime Error

writeln(mA[12]); // Constant Out Of Range

end.

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