12. Стандартные процедуры и
функции
Язык содержит ряд
процедур и функций, которые в практике
программирования ипользуются наиболее часто.
Расширенный список процедур и функций, которые
могут найти применение в практике
программирования, приведен в приложении.
12.1.
Строковые процедуры и
функции
Function Length (St): LongInt;
Возвращает длину
строки символов St, т. е. количество символов в ней
(не путать с размером строки).
St:= '1234abc';
L:= Length(St); {L= 7}
Procedure Delete (St, Pos, Num);
Удаляет Num символов
из строки St начиная с позиции Pos, если Pos<Length (St).
St:= '1234abc';
Delete(St, 4, 2); { St= '123bc'}
Delete(St, 3, 120); { St= '12'}
Procedure Insert (Obj, Target, Pos);
Вставляет строку Obj в
строку Target начиная с позиции Pos. Если Pos>Length (Target),
то результат Target + Obj.
St1:= '***';
St2:= '1234abc';
Insert (St1, St2, 3) { St2= '12***34abc'}
Procedure Str (Value, St);
Преобразует
значение Value числового типа в строку символов St.
Value может сопровождаться форматом.
L:=19;
Str (L, g); {g= '19'}
R:= 2.123155;
Str (R: 8:3, h); {h= ' 2.123' (длина 8, в
дробной части 3}
Procedure Val (St, Vr, Code);
Преобразует строку
символов St в числовую величину Vr целого или
вещественного типа. Code = 0, если преобразование
прошло успешно, иначе в Code будет записан номер
первого ошибочного символа конвертируемой
строки, при этом значение Vr не определено.
St:='319';
Val (St, k, Cod); {k= 319, Cod = 0}
St:='81yy9';
Val (St, k, Cod); {k= ?, Cod = 3}
Function Copy (St, Pos, Num): String;
Выделяет из строки St
подстроку символов длиной Num начиная с позиции Pos.
Если Pos>Length, то возвращает пустую строку.
St1:='АБВГДЕ';
St2:= Copy(St1, 2, 3); {St2= 'БВГ'}
St2:= Copy(St1, 2, 27); {St2= 'БВГДЕ'}
St2:= Copy(St1, 44, 2); {возвращает пустую строку St2= ''}
Function Concat (St1, St2{, …, StN}): String;
Объединяет строки в
одну строку.
St:='abc';
St1:=Concat( 'sss', St, '1234'); {St1= 'sssabc1234'}
St1:=Concat( St, '123'); {St1= 'abc123'}
Function Pos (Obj, Target): Integer;
Возвращает номер
символа, начиная с которого строка Obj первый раз
входит в строку Target. Если строка Obj отсутствует в
строке Target, то Pos = 0.
Q:= 'Иванов Сергей
Петрович';
H:= Pos ('Сергей', Q); {H= 7}
H:= Pos ('Игорь', Q); {H= 0}
Function SizeOf (Obj): Integer;
Возвращает размер
переменной Obj.
Function FormatFloat(const Format: string;
Value: Extended): string;
Возвращает
форматированное вещественное значение в виде
строки. Format – формат числа, Value – число. В табл. 14
даны форматы функции FormatFloat.
Таблица 14
Формат |
Описание |
0
#
.
,
E+, E-
; |
Поле для
цифры. Недостающие позиции заменяются нулями Поле
для цифры. Если в позиции имеется значащая цифра,
то оно выводится. Нули не выводятся
Разделитель целой и дробной частей
Поле разделителя тысяч, миллионов
Формат представления чисел с плавающей точкой.
Если "+" указан, то перед порядком выводится
знак. Если указан "-", то минус выводится
только для отрицательных порядков
Разделитель форматов |
Примеры действия форматов при конвертации
числа в строку представлены в табл. 15.
Таблица 15
Формат |
Число
1 |
Число
2 |
Число
3 |
Число
4 |
0 0.00
#.##
#,##0.00
#,##0.00;(#,##0.00)
#,##0.00;;Zero
0.000E+00
#.###E-0 |
1234
1234
1234.00
1234
1,234.00
1,234.00
1,234.00
.234E+03
1.234E3 |
-1234
-1234
-1234.00
-1234
-1,234.00
(1,234.00)
-1,234.00
-1.234E+03
-1.234E3 |
0.5
1
0.50
.5
0.50
0.50
0.50
5.000E-01
5E-1 |
0
0
0.00
0.00
0.00
Zero
0.000E+00
0E0 |
12.2. Стандартные функции
- Function Char (X: byte): Char;
Возвращает символ с
номером X.
Ch:= Char(74); {Ch= 'J'}
Function Ord (X): LongInt;
Возвращает
порядковый номер скалярного аргумента.
j:= Ord('J'); {j= 74}
Function Round (X: Real): LongInt;
Возвращает
округленное до целого значение вещественного
аргумента.
j:= Round(12.8235); {j= 13}
Function Trunc (X: Real): LongInt;
Возвращает целое
путем отбрасывания дробной части вещественного
аргумента.
j:= Round(12.8235); {j= 12}
12.3.
Арифметические процедуры и функции
- Function Frac (X: Extended): Extended;
Возвращает дробную
часть аргумента, например :
r:= Frac(-12.82); {r = -0.82, Frac(12.82)=0.82 }
- Function Abs (X: Extended): Extended;
Возвращает абсолютное
значение аргумента, например:
r:= Abs(-12.82); {r = 12.82}
- Function ArcTan (X: Extended): Extended;
Возвращает арктангенс
аргумента.
- Function Cos (X: Extended): Extended;
Возвращает косинус
аргумента .
- Function Sin
(X: Real): Real;
Возвращает синус аргумента .
- Function ArcCos(X: Extended): Extended;
Возвращает
арккосинус аргумента, значение которого должно
принадле-жать отрезку [-1, 1]. Возвращает значение
из отрезка [0, Pi].
- Function ArcSin(X: Extended): Extended;
Возвращает арксинус
аргумента, значение которого должно
принадле-жать отрезку [-1, 1]. Возвращает значение
из отрезка [-Pi/2, Pi/2].
- Function ArcTan2(Y, X: Extended): Extended;
Возвращает арктангенс
аргументов, вычисляя ArcTan(Y/X) в соответ-ствии с
квадрантами координатной плоскости xOy.
Возвращает значение из отрезка [-Pi, Pi].
- Function Exp (X: Real): Real;
Возвращает экспоненту
аргумента .
- Function Sinh(X: Extended): Extended;
Возвращает гиперболический
синус аргумента .
- Function Cosh(X: Extended): Extended;
Возвращает гиперболический
косинус аргумента .
- Function Tanh(X: Extended): Extended;
Возвращает гиперболический
тангенс аргумента .
- Function ArcSinh(X: Extended): Extended;
Возвращает гиперболический
арксинус аргумента .
- Function ArcCosh(X: Extended): Extended;
Возвращает гиперболический
арккосинус аргумента .
- Function ArcTanh(X: Extended): Extended;
Возвращает гиперболический арктангенс
аргумента.
- Function Ln (X: Real): Real;
Возвращает натуральный
логарифм аргумента .
- Function Sqr (X: Real): Real;
Возвращает квадрат аргумента .
- Function Sqrt (X: Real): Real;
Возвращает квадратный корень
аргумента .
- Function
Ceil(X: Extended):Integer;
Возвращает наибольшее целое
аргумента.
Сeil(-2.8) = -2
Ceil(2.8) = 3
Ceil(-1.0) = -1
- Function Floor(X: Extended): Integer;
Возвращает наименьшее целое
аргумента .
Ceil(-2.8) = -3
Ceil(2.8) = 2
Ceil(-1.0) = -1
- Function Dec (X, [n]: LongInt): LongInt;
Уменьшает значение аргумента
на величину второго параметра. Если он
отсутствует, то уменьшает на 1.
J:=67;
K:=Dec(J); {j= 66}
K:=Dec(J, 13); {j= 53}
- Function Inc (X, [n]: LongInt): LongInt;
Увеличивает значение
аргумента на величину второго параметра. Если он
отсутствует, то увеличивает на 1.
J:=67;
K:=Inc(J); {j= 68}
K:=Inc(J, 13); {j= 81}
12.4.
Скалярные функции
Function Odd (X: LongInt): Boolean;
Возвращает True, если аргумент четный.
J:=67;
K:=Odd(J); {K= False}
Function Pred (X);
Возвращает
предшествующее значение типа аргумента.
Function Succ (X);
Возвращает последующее
значение типа аргумента.
12.5. Процедуры
завершения
Procedure Exit; Выход из
процедуры.
Procedure Halt([Code:Word]);
Выход в операционную систему с
кодом возврата, если он указан.
12.6. Процедуры и функции для работы с
типами "дата/время"
Типы TDateTime и TTimeStamp, а также производные от них типы
предназначены для хранения даты и времени. Эти
типы используются в ряде весьма полезных и
необходимых процедур и функций для работы с
датами и временем.
Function Now: TDateTime;
Возвращает текущую
дату и время.
Function Date: TDateTime;
Возвращает текущую
дату.
Function Time: TDateTime;
Возвращает текущее
время.
Function DateToStr (D: TDateTime): String;
Преобразует дату в
строку символов, например :
S:= DateTimeToStr(Date); {текущая дата
'26.10.99'}
Function TimeToStr(T: TDateTime): String;
Преобразует время в
строку символов, например :
S:= TimeToStr(Time); { текущее время
'13.58.13'}
Function DateTimeToStr(DateTime: TDateTime):
String;
Преобразует
дату/время в строку символов, например :
S:= DateTimeToStr(Now); { текущие дата
и время '26.10.99 14.01.51'}
Function DateTimeToTimeStamp(DateTime:
TDateTime): TTimeStamp;
Конвертирует TDateTime
в TTimeStamp,
например:
TS:= DateTimeToTimeStamp(Now); {type TS =
TTimeStamp}
s:= IntToStr(Ts.Date) + ' ' + IntToStr(Ts.Time);
{'730053 51095810' – (прошло дней с 00.00.0000 г. и миллисекунд
от полуночи текущего дня}
Function
TimeStampToDateTime(const TimeStamp:
TTimeStamp): TDateTime;
Конвертирует TTimeStamp в
TDateTime.
Procedure DecodeDate(Date: TDateTime; var Year,
Month, Day: Word);
Раскладывет дату Date
на год, месяц и день, например :
DecodeDate(Now, Y, M, D);
s:= IntToStr(Y) + ' ' + IntToStr(M) + ' ' + IntToStr(M); {'1999 10 26'}
.Procedure DecodeTime(Time: TDateTime; var
Hour, Min, Sec, MSec: Word);
Раскладывет время Time
на час, минуты, секунды и миллисекунды, например :
DecodeTime(Now, H, M, S, MS);
ss:= IntToStr(H) + ' ' + IntToStr(M) + ' ' + IntToStr(S) + ' ' + IntToStr(MS);
{'14 22 34 567', т. е. 14 ч 22 мин 34 с 567 мс}
.Function EncodeDate(Year, Month, Day: Word): TDateTime;
Противоположна
DecodeDate;
.Function EncodeTime(Hour, Min, Sec, MSec:
Word): TDateTime;
Противоположна
DecodeTime;
.Function FormatDateTime(const Frmt: string;
DateTime: TDateTime): string;
Преобразует DateTime
в строку с заданным форматом.
Если формат пуст, то функция возвращает строку в
формате "c". Следующий
оператор присвоит строковой переменной s значение 'Встреча
состоится: пятница, 6 Ноябрь, 1999, в 10:30 AM'.
s:= FormatDateTime('"Встреча
состоится:" dddd, mmmm d, yyyy, ' +'"в" hh:mm AM/PM',
StrToDateTime('6.11.99 10:30am'));
Виды форматов
даны в табл. 16.
12.7. Прочие
процедуры и функции
Function Hi(X): byte;
Возвращает старший
байт своего целочисленного аргумента.
Function Lo(X) : byte;
Возвращает младший
байт своего целочисленного аргумента.
Procedure Swap(X);
Меняет старший и
младший байты целочисленного аргумента местами.
Procedure Randomize;
Инициализирует
генератор случайных чисел .
Function Random(N: Integer): Integer;
Возвращает случайное
число из интервала (0, N).
Function SizeOf(X) : Integer;
Возвращает число байт,
занимаемых аргументом.
Procedure Move(Var Source, Dest; Count:
Integer);
Копирует Count байт из переменной Source в
переменную Dest. В случае перекрытия областей
памяти пересылка в перекрывающуюся область не
производится.
Function ParamCount: Word;
Возвращает число
параметров, переданных в командной строке.
Procedure Break;
Оператор безусловного
завершения цикла, процедуры или функции.
. Procedure Continue;
Оператор, используемый
в цикле для передачи управления в его начало.
Таблица 16
Формат |
Описание |
C
D
Dd
Ddd
Dddd
Ddddd
Dddddd
M
Mm
Mmm
Mmmm
Yy
Yyyy
h
hh
n
nn
s
ss
t
tt
am/pm
ampm
a/p
/
: |
Показывает
сначала дату в формате дд.мм.гг, затем время в
формате чч.мм.сс. Не показывает время, если
дробная часть DateTime равна нулю
Показывает день без лидирующего нуля (1
– 31)
Показывает день с лидирующим нулём (01
– 31)
Показывает день недели в укороченном
формате (Вос – Суб)
Показывает день недели в полном
формате (Воскресенье – Суббота)
Показывает дату в формате дд.мм.гг.
Показывает дату в
формате д Месяц год
Показывает месяц без лидирующего нуля
(1 – 12)
Показывает месяц с лидирующим нулём (01
– 12)
Показывает месяц в сокращенном виде
(Янв – Дек)
Показывает месяц в полном формате
(Январь – Декабрь)
Показывает год в виде двух последних
цифр (00 – 99)
Показывает год в виде
четырех цифр (00000 – 9999)
Показывает час без
лидирующего нуля (0 – 23)
Показывает час с лидирующим нулем (00 –
23)
Показывает минуту без лидирующего
нуля (0 – 59)
Показывает минуту с лидирующим нулем (00
– 59)
Показывает секунду без
лидирующего нуля (0 – 59)
Показывает секунду с лидирующим нулем
(00 – 59)
Показывает время в формате чч :мм
Показывает время в
формате чч:мм:сс
Показывает время в 12-часовом формате (am – до полудня, pm
– после полудня)
Показывает время в 12-часовом формате без указателя
до/после полудня
Использует Windows-разделитель
даты.
Использует Windows-разделитель
времени |
. procedure Abort;
Используется в
контексте с другим оператором; отменяет
"задним числом" оператор в случае его
аварийного завершения, блокирует выдачу
сообщения об ошибке, удобен к использованию в
блоке try … finally.
|