Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры и функции для работы со строками string




Begin

Begin

Var

End.

Begin

Const

Var

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

Begin

Var

Проверка переполнения при арифметических операциях

Begin

Var

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

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

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

And

If

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

(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}

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

Применён в проекте OptPathRDLU.


{$J + } or {$J-}

или

{$WRITEABLECONST ON} or {$WRITEABLECONST OFF}

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

{$J-}

или

{$WRITEABLECONST OFF}

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

Ключ {$J + } применён в проектах KnightTurns и OptPathRDLU.

 

 


Генерация информации о текущих типах полей, методов, свойств, объявленных в секции 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

 

i: integer;

mA, nB: array [1..10] of integer;

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.

{$Q + } or {$Q-}

или

{$OVERFLOWCHECKS ON} or {$OVERFLOWCHECKS OFF}

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

{$Q-}

или

{$OVERFLOWCHECKS OFF}

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

 


Пример. TP7

 

L: integer;

L:= 2000000000;

{$Q-}

L:= L*L; // Реакции на переполнение нет

writeln(L); // -1651507200

L:= 1000000000;

{$Q + }

L:= L*L; // RunTime Error

end.

 


{$X + } or {$X-}

или

{$EXTENDEDSYNTAX ON} or {$EXTENDEDSYNTAX OFF}

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

{$X + }

или

{$EXTENDEDSYNTAX ON}

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

 

 


Пример 1. TP7

 

{$X + }

p: pChar; // То же, что p = ^Char;

mC: array [0..39] of char = 'Petrov'#0; // Синтаксическая ошибка при {$X-}

// Во ВСЕХ последующих операторах

// будет выявлена синтаксическая ошибка при ключе {$X-}

// При ключе {$X+} код нормально компилируется и работает.

p:= 'Nikolaev';

writeln(Ord(p[8])); // 0

writeln(p);

p:= @mC;

writeln(p);

writeln(p[0]);

Пример 2. TP7

 

{$X + }

uses crt;

c: char;

x, y: double;

c:= readkey;

ReadKey; // Синтаксическая ошибка при {$X-}

x:= pi/2; y:= sin(x);

sin(x); // Синтаксическая ошибка в любом случае

end.


Пример 3. Delphi

 

{$X + }

function Factorial(N: longint): longint;

var i: longint;

Result:= 1; // Синтаксическая ошибка при {$X-}

for i:= 2 to N do Result:= Result * i; // Синтаксическая ошибка при {$X-}

end;

 

 

function Length(S: string): byte;

Возвращает длину строки S. Значение длины равноценно значению Ord(s[0]), поскольку код «нулевого» байта строки есть её текущая длина.

 

function Copy(S: string; iStart, iLength: byte): string;

Возвращает подстроку строки S – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.

Замечание: Copy(S, n, 1) равноценно S[n].

 

procedure Delete(S: string; iStart, iLength: byte);

Удаляет из строки S её подстроку – набор из iLength символов, начинающийся с символа с номером iStart. Нумерация символов в строке начинается с единицы.

 

function Index(S, SWhat: string): byte;

Ищет первое вхождение подстроки sWhat в строку S. Результат – номер символа, начиная с которого найдено вхождение. Результат – ноль, если вхождение не найдено.

 

function Str(X: <числовой тип>): string;

Возвращает строковое выражение числа X.

 

procedure Val(S: string; var X: <числовой тип>; IER: integer);

Пытается преобразовать строку S в число и занести его в параметр-переменную X. Если попытка завершается удачно, IER=0, в противном случае IER<>0.

 

 





Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 271; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.