Коднянко В.А.
Программирование на языке Object Pascal в среде Delphi

 

12. Стандартные процедуры и функции

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

12.1. Строковые процедуры и функции

  1. Function Length (St): LongInt;
  2. Возвращает длину строки символов St, т. е. количество символов в ней (не путать с размером строки).

    St:= '1234abc';

    L:= Length(St); {L= 7}

  3. Procedure Delete (St, Pos, Num);
  4. Удаляет Num символов из строки St начиная с позиции Pos, если Pos<Length (St).

    St:= '1234abc';
    Delete(St, 4, 2); { St= '123bc'}
    Delete(St, 3, 120); { St= '12'}

  5. Procedure Insert (Obj, Target, Pos);
  6. Вставляет строку Obj в строку Target начиная с позиции Pos. Если Pos>Length (Target), то результат Target + Obj.

    St1:= '***';
    St2:= '1234abc';
    Insert (St1, St2, 3) { St2= '12***34abc'}

  7. Procedure Str (Value, St);
  8. Преобразует значение Value числового типа в строку символов St. Value может сопровождаться форматом.

    L:=19;
    Str (L, g); {g= '19'}
    R:= 2.123155;
    Str (R: 8:3, h); {h= ' 2.123' (длина 8, в дробной части 3}

  9. Procedure Val (St, Vr, Code);
  10. Преобразует строку символов 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}

  11. Function Copy (St, Pos, Num): String;
  12. Выделяет из строки St подстроку символов длиной Num начиная с позиции Pos. Если Pos>Length, то возвращает пустую строку.

    St1:='АБВГДЕ';
    St2:= Copy(St1, 2, 3); {St2= 'БВГ'}
    St2:= Copy(St1, 2, 27); {St2= 'БВГДЕ'}
    St2:= Copy(St1, 44, 2); {возвращает пустую строку St2= ''}

  13. Function Concat (St1, St2{, …, StN}): String;
  14. Объединяет строки в одну строку.

    St:='abc';
    St1:=Concat( 'sss', St, '1234'); {St1= 'sssabc1234'}
    St1:=Concat( St, '123'); {St1= 'abc123'}

  15. Function Pos (Obj, Target): Integer;
  16. Возвращает номер символа, начиная с которого строка Obj первый раз входит в строку Target. Если строка Obj отсутствует в строке Target, то Pos = 0.

    Q:= 'Иванов Сергей Петрович';
    H:= Pos ('Сергей', Q); {H= 7}
    H:= Pos ('Игорь', Q); {H= 0}

  17. Function SizeOf (Obj): Integer;
  18. Возвращает размер переменной Obj.

  19. 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. Стандартные функции 

  1. Function Char (X: byte): Char;
  2. Возвращает символ с номером X.

    Ch:= Char(74); {Ch= 'J'}

  3. Function Ord (X): LongInt;
  4. Возвращает порядковый номер скалярного аргумента.

    j:= Ord('J'); {j= 74}

  5. Function Round (X: Real): LongInt;
  6. Возвращает округленное до целого значение вещественного аргумента.

    j:= Round(12.8235); {j= 13}

  7. Function Trunc (X: Real): LongInt;

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

j:= Round(12.8235); {j= 12}

12.3. Арифметические процедуры и функции 

  1. Function Frac (X: Extended): Extended;
  2. Возвращает дробную часть аргумента, например:

    r:= Frac(-12.82); {r = -0.82, Frac(12.82)=0.82 }

  3. Function Abs (X: Extended): Extended;
  4. Возвращает абсолютное значение аргумента, например:

    r:= Abs(-12.82); {r = 12.82}

  5. Function ArcTan (X: Extended): Extended;
  6. Возвращает арктангенс аргумента.

  7. Function Cos (X: Extended): Extended;
  8. Возвращает косинус аргумента.

  9. Function Sin (X: Real): Real;
  10. Возвращает синус аргумента.

  11. Function ArcCos(X: Extended): Extended;
  12. Возвращает арккосинус аргумента, значение которого должно принадле-жать отрезку [-1, 1]. Возвращает значение из отрезка [0, Pi].

  13. Function ArcSin(X: Extended): Extended;
  14. Возвращает арксинус аргумента, значение которого должно принадле-жать отрезку [-1, 1]. Возвращает значение из отрезка [-Pi/2, Pi/2].

  15. Function ArcTan2(Y, X: Extended): Extended;
  16. Возвращает арктангенс аргументов, вычисляя ArcTan(Y/X) в соответ-ствии с квадрантами координатной плоскости xOy. Возвращает значение из отрезка [-Pi, Pi].

  17. Function Exp (X: Real): Real;
  18. Возвращает экспоненту аргумента.

  19. Function Sinh(X: Extended): Extended;
  20. Возвращает гиперболический синус аргумента.

  21. Function Cosh(X: Extended): Extended;
  22. Возвращает гиперболический косинус аргумента.

  23. Function Tanh(X: Extended): Extended;
  24. Возвращает гиперболический тангенс аргумента.

  25. Function ArcSinh(X: Extended): Extended;
  26. Возвращает гиперболический арксинус аргумента.

  27. Function ArcCosh(X: Extended): Extended;
  28. Возвращает гиперболический арккосинус аргумента.

  29. Function ArcTanh(X: Extended): Extended;
  30. Возвращает гиперболический арктангенс аргумента.

  31. Function Ln (X: Real): Real;
  32. Возвращает натуральный логарифм аргумента.

  33. Function Sqr (X: Real): Real;
  34. Возвращает квадрат аргумента.

  35. Function Sqrt (X: Real): Real;
  36. Возвращает квадратный корень аргумента.

  37. Function Ceil(X: Extended):Integer;
  38. Возвращает наибольшее целое аргумента.

    Сeil(-2.8) = -2
    Ceil(2.8) = 3
    Ceil(-1.0) = -1

  39. Function Floor(X: Extended): Integer;
  40. Возвращает наименьшее целое аргумента.

    Ceil(-2.8) = -3
    Ceil(2.8) = 2
    Ceil(-1.0) = -1

  41. Function Dec (X, [n]: LongInt): LongInt;
  42. Уменьшает значение аргумента на величину второго параметра. Если он отсутствует, то уменьшает на 1.

    J:=67;
    K:=Dec(J); {j= 66}
    K:=Dec(J, 13); {j= 53}

  43. Function Inc (X, [n]: LongInt): LongInt;

Увеличивает значение аргумента на величину второго параметра. Если он отсутствует, то увеличивает на 1.

J:=67;
K:=Inc(J); {j= 68}
K:=Inc(J, 13); {j= 81}

12.4. Скалярные функции

  1. Function Odd (X: LongInt): Boolean;
  2. Возвращает True, если аргумент четный.

    J:=67;
    K:=Odd(J); {K= False}

  3. Function Pred (X);
  4. Возвращает предшествующее значение типа аргумента.

  5. Function Succ (X);

Возвращает последующее значение типа аргумента.

12.5. Процедуры завершения

  1. Procedure Exit; Выход из процедуры.
  2. Procedure Halt([Code:Word]);

Выход в операционную систему с кодом возврата, если он указан.

 

12.6. Процедуры и функции для работы с типами "дата/время"

Типы TDateTime и TTimeStamp, а также производные от них типы предназначены для хранения даты и времени. Эти типы используются в ряде весьма полезных и необходимых процедур и функций для работы с датами и временем.

  1. Function Now: TDateTime;
  2. Возвращает текущую дату и время.

  3. Function Date: TDateTime;
  4. Возвращает текущую дату.

  5. Function Time: TDateTime;
  6. Возвращает текущее время.

  7. Function DateToStr (D: TDateTime): String;
  8. Преобразует дату в строку символов, например:

    S:= DateTimeToStr(Date); {текущая дата '26.10.99'}

  9. Function TimeToStr(T: TDateTime): String;
  10. Преобразует время в строку символов, например:

    S:= TimeToStr(Time); { текущее время '13.58.13'}

  11. Function DateTimeToStr(DateTime: TDateTime): String;
  12. Преобразует дату/время в строку символов, например:

    S:= DateTimeToStr(Now); { текущие дата и время '26.10.99 14.01.51'}

  13. Function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
  14. Конвертирует TDateTime в TTimeStamp, например:

    TS:= DateTimeToTimeStamp(Now); {type TS = TTimeStamp}

    s:= IntToStr(Ts.Date) + ' ' + IntToStr(Ts.Time); {'730053 51095810' – (прошло дней с 00.00.0000 г. и миллисекунд от полуночи текущего дня}

  15. Function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
  16. Конвертирует TTimeStamp в TDateTime.

  17. Procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
  18. Раскладывет дату Date на год, месяц и день, например:

    DecodeDate(Now, Y, M, D);
    s:= IntToStr(Y) + ' ' + IntToStr(M) + ' ' + IntToStr(M); {'1999 10 26'}

  19. .Procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
  20. Раскладывет время Time на час, минуты, секунды и миллисекунды, например:

    DecodeTime(Now, H, M, S, MS);
    ss:= IntToStr(H) + ' ' + IntToStr(M) + ' ' + IntToStr(S) + ' ' + IntToStr(MS);
    {'14 22 34 567', т. е. 14 ч 22 мин 34 с 567 мс}

  21. .Function EncodeDate(Year, Month, Day: Word): TDateTime;
  22. Противоположна DecodeDate;

  23. .Function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
  24. Противоположна DecodeTime;

  25. .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. Прочие процедуры и функции

  1. Function Hi(X): byte;
  2. Возвращает старший байт своего целочисленного аргумента.

  3. Function Lo(X) : byte;
  4. Возвращает младший байт своего целочисленного аргумента.

  5. Procedure Swap(X);
  6. Меняет старший и младший байты целочисленного аргумента местами.

  7. Procedure Randomize;
  8. Инициализирует генератор случайных чисел.

  9. Function Random(N: Integer): Integer;
  10. Возвращает случайное число из интервала (0, N).

  11. Function SizeOf(X) : Integer;
  12. Возвращает число байт, занимаемых аргументом.

  13. Procedure Move(Var Source, Dest; Count: Integer);
  14. Копирует Count байт из переменной Source в переменную Dest. В случае перекрытия областей памяти пересылка в перекрывающуюся область не производится.

  15. Function ParamCount: Word;
  16. Возвращает число параметров, переданных в командной строке.

  17. Procedure Break;
  18. Оператор безусловного завершения цикла, процедуры или функции.

  19. . Procedure Continue;
  20. Оператор, используемый в цикле для передачи управления в его начало.

    Таблица 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-разделитель времени

     

  21. . procedure Abort;

Используется в контексте с другим оператором; отменяет "задним числом" оператор в случае его аварийного завершения, блокирует выдачу сообщения об ошибке, удобен к использованию в блоке try … finally.

 

</body> </html>