Процедуры и функции Pascal

  1. {Арифметические функции}
  2. {Строковые процедуры и функции}
  3. {Процедуры работы с динамической памятью}
  4. {Процедуры управления программой}
  5. {Процедуры и функции работы с файлами}
  6. {Процедуры работы с множествами}
  7. {Процедуры и функции работы с порядковыми величинами}
  8. {Процедуры и функции преобразования величин}
  9. {Процедуры и функции работы с датой и временем}
  10. {Функции форматирования}
  11. {Разные процедуры и функции}

Арифметические функции

Модуль System

Function Abs(X);

Возвращает абсолютное значение параметра.
X - выражение вещественного или целочисленного типа.

Function ArcTan(X: Extended): Extended;

Возвращает арктангенс аргумента.
X - выражение вещественного или целочисленного типа.

Function Exp(X: Real): Real;

Возвращает экспоненту.
X - выражение вещественного или целочисленного типа.

Function Frac(X: Real): Real;

Возвращает дробную часть аргумента.
X - выражение вещественного типа. Результат - дробная часть X, то есть 

Frac (X) = X - Int (X).

Function Int(X: Real): Real;

Возвращает целочисленную часть аргумента.
X - выражение вещественного типа. Результат - целочисленная часть X, то есть X, округленный к нулю.

Function Ln(X: Real): Real;

Возвращает натуральный логарифм (Ln е = 1) выражения Х вещественного типа.

Function Pi: Extended;

Возвращает значение Pi, которое определено как 3.1415926535897932385.

Function Sin(X: Extended): Extended;

Возвращает синус аргумента.
X - выражение вещественного типа. Sin возвращает синус угла X в радианах.

Function Sqr(X: Extended): Extended;

Возвращает квадрат аргумента.
X - выражение с плавающей запятой. Результат того же самого типа, что и X.

Function Sqrt(X: Extended): Extended;

Возвращает квадратный корень аргумента.
X - выражение с плавающей запятой. Результат - квадратный корень X.

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

Модуль System

Function Copy(S: String; Index, Count: Integer): String;

Возвращает подстроку строки. S - выражение типа String. Index и Count - выражения целого типа. Функция возвращает строку, содержащую Count символов, начинающихся с позиции Index.

Если Index больше, чем длина S, функция возвращает пустую строку.

Procedure Delete(var S: String; Index, Count:Integer);

Удаляет подстроку символов длиной Count из строки S, начиная с позиции Index. S - переменная типа String. Index и Count - выражения целого типа.

Если Index больше, чем длина S, символы не удаляются.

Procedure Insert(Source: String; var S: String; Index: Integer);

Объединяет подстроку в строку, начиная с определенной позиции. Source - выражение типа String. S - переменная типа String любой длины. Index - выражение целочисленного типа. Insert вставляет Source в S, начиная с позиции S[Index].

Function Length(S: String): Integer;

Возвращает число символов, фактически используемое в строке S.

Обратите внимание: при использовании строк с нуль-окончанием, число символов не обязательно равно числу байтов.

Function Pos(Substr: String; S: String): Integer;

Ищет подстроку в строке.

Pos ищет Substr внутри S и возвращает целочисленное значение, которое является индексом первого символа Substr внутри S. Если Substr не найден, Pos возвращает ноль.

Процедуры работы с динамической памятью

Модуль System

Procedure Dispose(var P: Pointer);

Освобождает память, распределенную для динамической переменной.

После вызова Dispose значение P не определено. При включенной директиве {$I+}, вы можете использовать исключительные ситуации, чтобы обработать эту ошибку.

Procedure FreeMem(var P: Pointer [; Size: Integer]);

Освобождает память, выделенную динамической переменной данного размера. P - переменная любого типа-указателя, предварительно созданная процедурой GetMem. Size определяет размер динамической переменной в байтах. Для корректной работы этой процедуры, Size должно быть точно равно числу байтов, предварительно распределенных для этой переменной процедурой GetMem. FreeMem уничтожает переменную P и возвращает память «куче». Если P не указывает на память в «куче», возникает ошибка времени выполнения.

После вызова FreeMem, значение P не определено, и происходит ошибка, если Вы впоследствии ссылаетесь на P^. Вы можете использовать исключительные ситуации, чтобы обработать эту ошибку.

Procedure GetMem(var P: Pointer; Size: Integer);

GetMem создает динамическую переменную определенного размера и помещает адрес блока в переменную Р. P - переменная любого типа-указателя. Size - выражение, определяющее размер в байтах динамической переменной. Вы должны ссылаться на созданную переменную как P^.

Procedure New(var P: Pointer);

Создает новую динамическую переменную и помещает ее адрес в переменную Р. P - переменная любого типа-указателя. Размер распределенного блока памяти равен размеру типа, на который указывает P. Если памяти недостаточно, чтобы распределить динамическую переменную, возникает исключительная ситуация EOutOfMemory. При завершении программы, все динамические переменные, созданные процедурами New или GetMem, должны быть уничтожены соответственно процедурами Dispose или FreeMem.

Процедуры управления программой

Модуль System

Procedure Break;

Процедура осуществляет досрочный выход из циклов For, While или Repeat. Процедура должна находиться внутри этих циклов, иначе транслятор сообщит об ошибке.

Procedure Continue;

Процедура досрочно начинает следующую итерацию циклов For, While или Repeat. Процедура должна находиться внутри этих циклов, иначе транслятор сообщит об ошибке.

Procedure Exit;

Осуществляет немедленный выход из текущей подпрограммы. Если текущей подпрограммой является главная программа, она завершает работу.

Procedure Halt[(Exitcode: Integer)];

Процедура выполняет аварийное завершение программы. Чтобы нормально завершить приложение, вызовите Application.Terminate. Exitcode - необязательное выражение, которое определяет код завершения вашей программы.

Пример:

if 1 = 1 then
begin
  if 2 = 2 then
  begin
    if 3 = 3 then
    begin
      Halt(1); { Программа остановится здесь! }
    end;
  end;
end;
 
Canvas.TextOut(10, 10, 'Это не будет выполнено');

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

Модуль System

Procedure AssignFile(var F; FileName: String);

Для избежания конфликтов, AssignFile заменяет стандартную процедуру Assign в Delphi. Однако для обратной совместимости вы можете использовать Assign. Процедура AssignFile сопоставляет имя внешнего файла с файловой переменной.

F - файловая переменная любого файлового типа, FileName - выражение типа String или выражение типа PChar, если допускается расширенный синтаксис. Все дальнейшие операции с F производятся с внешним файлом.

Не используйте AssignFile с уже открытой файловой переменной.

Procedure CloseFile(var F);

Из-за конфликтов наименования, процедура CloseFile заменяет стандартную процедуру Close из Borland Pascal. Используйте CloseFile чтобы разорвать связь между файловой переменной и внешним дисковым файлом и закрыть файл.

F - файловая переменная любого файлового типа, открытая процедурами Reset, Rewrite или Append. Внешний файл, связанный с F, полностью модифицируется и затем закрывается, освобождая дескриптор файла для повторного использования.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

Function Eof(var F): Boolean;

(типизированные или нетипизированные файлы)

Function Eof[(var F: Text)]: Boolean;

(текстовые файлы)

Проверяет, является или нет текущая позиция файла концом файла.

Eof(F) возвращает True, если текущая позиция файла находится за последним символом файла или если файл пуст; иначе, Eof (F) возвращает False.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

Procedure Erase(var F);

Удаляет внешний файл, связанный с F.

F - файловая переменная любого файлового типа.

Перед вызовом процедуры Erase, файл необходимо закрыть.

Директива {$I+} позволяет вам обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций.

При выключенной директиве {$I-}, вы должны использовать IOResult для проверки ошибок ввода - вывода.

Function FileSize(var F): Integer;

Возвращает размер в байтах файла F. Однако, если F - типизированный файл, FileSize возвратит число записей в файле.

Перед использованием функции FileSize, файл должен быть открыт.

Если файл пуст, FileSize(F) возвращает 0.

F - переменная любого файлового типа.

Function FilePos(var F): LongInt;

Возвращает текущую позицию файла внутри файла.

Перед использованием функции FilePos, файл должен быть открыт. Функция FilePos не используется с текстовыми файлами.

F - переменная любого файлового типа, кроме типа Text.

Procedure Reset(var F [: File; RecSize: Word]);

Открывает существующий файл.

F - переменная любого файлового типа, связанного с внешним файлом с помощью AssignFile. RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байт.

Процедура Reset открывает существующий внешний файл, ассоциированный с файловой переменной F. Если внешнего файла с таким именем нет, возникает ошибка времени выполнения. Если файл, связанный с F уже открыт, он сначала закрывается и затем вновь открывается. Текущая позиция файла устанавливается к началу файла.

Procedure Rewrite(var F: File [; Recsize: Word]);

Создает и открывает новый файл.

F - переменная любого файлового типа, связанного с внешним файлом с использованием AssignFile.RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байт.

Процедура Rewrite создает новый внешний файл с именем, связанным с F.

Если внешний файл с тем же самым именем уже существует, он удаляется, и создается новый пустой файл.

Procedure Seek(var F; N: LongInt);

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

Текущая позиция файла F перемещается к номеру N. Номер первого компонента файла - 0.

Инструкция Seek(F, FileSize(F)) перемещает текущую позицию файла в конец файла.

Procedure Append(var F: Text);

Открывает существующий текстовый файл для добавления информации в конец файла (дозаписи).

Если внешнего файла с данным именем не существует, происходит ошибка времени выполнения.

Если файл F уже открыт, он закрывается и вновь открывается. Текущая позиция файла устанавливается к концу файла.

Function Eoln[(var F: Text)]: Boolean;

Проверяет, является ли текущая позиция файла концом строки текстового файла.

Eoln(F) возвращает True, если текущая позиция файла - в конце строки или файла; иначе Eoln(F) возвращает False.

Procedure Read(F, V1 [, V2, ..., Vn]);

(типизированные и нетипизированные файлы)

Procedure Read([var F: Text;] V1 [, V2, ..., Vn]);

(текстовые файлы)

Для типизированных файлов процедура читает компонент файла в переменную. При каждом считывании текущая позиция в файле продвигается к следующему элементу.

Для текстовых файлов читается одно или несколько значений в одну или несколько переменных.

С переменными типа String Read считывает все символы вплоть до следующей метки конца строки (но не включая ее), или пока функция Eof(F) не примет значение True. Переменной присваивается получившаяся в результате символьная строка.

В случае переменной целого или вещественного типа процедура ожидает поступления последовательности символов, образующих число по правилам синтаксиса языка Object Pascal. Считывание прекращается при обнаружении первого пробела, символа табуляции или метки конца строки, или в том случае, если функция Eof(F) принимает значение True. Если числовая строка не соответствует ожидаемому формату, то происходит ошибка ввода-вывода.

Procedure Readln([var F: Text;] V1 [, V2, ..., Vn]);

Является расширением процедуры Read и определена для текстовых файлов. Считывает строку символов в файле (включая маркер конца строки) и переходит к началу следующей строки. Вызов функции Readln(F) без параметров приводит к перемещению текущей позиции файла на начало следующей строки, если она имеется, в противном случае происходит переход к концу файла.

Function SeekEof[(var F: Text)]: Boolean;

Возвращает признак конца файла и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

Function SeekEoln[(var F: Text)]: Boolean;

Возвращает признак конца строки в файле и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

Procedure Write([var F: Text;] P1 [, P2, ..., Pn]);

(текстовые файлы)

Записывает одну или более величин в текстовый файл.

Каждый параметр записи должен иметь тип Char, один из целочисленных типов (Byte, ShortInt, Word, LongInt, Cardinal), один из типов с плавающей запятой (Single, Real, Double, Extended, Currency), один из строковых типов (PChar, AnsiString, ShortString), или одного из логических типов (Boolean, Bool).

Procedure Write(F, V1, ..., Vn);

(типизированные файлы)

Записывает переменную в компонент файла. Переменные V1,…,Vn должны быть того же типа, что и элементы файла. При каждой записи переменной текущая позиция в файле передвигается к следующему элементу.

Procedure Writeln([var F: Text;] P1 [, P2, ..., Pn]);

(текстовые файлы)

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

Вызов Writeln(F) без параметров записывает в файл маркер конца строки.

Файл должен быть открыт для вывода.

Процедуры работы с множествами

Модуль System

Procedure Exclude(var S: Set of T; I:T);

Удаляет элемент I из множества S.

S - переменная типа-множество, и I - выражение типа, совместимого с исходным типом S.

Конструкция Exclude(S, I) соответствует S: = S - [I], но генерирует более эффективный код.

Procedure Include(var S: Set of T; I:T);

Добавляет элемент I к множеству S.

S - переменная типа-множество, и I - выражение типа, совместимого с типом S.

Конструкция Include(S, I) соответствует S: = S + [I], но генерирует более эффективный код.

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

Модуль System

Procedure Dec(var X [; N: LongInt]);

Вычитает единицу или N из переменной X.

Dec(X) соответствует X := X - 1, и Dec(X, N) соответствует X := X - N.

X - переменная перечислимого типа или типа PChar, если допускается расширенный синтаксис, и N - выражение с целочисленного типа.

Процедура Dec генерирует оптимальный код и особенно полезна в длительных циклах.

Procedure Inc(var X [; N: LongInt]);

Прибавляет единицу или N к переменной X.

X - переменная перечислимого типа или типа PChar, если допускается расширенный синтаксис, и N - выражение целочисленного типа.

Inc (X) соответствует инструкции X := X + 1, и Inc (X, N) соответствует инструкции X := X + N.

Процедура Inc генерирует оптимальный код и особенно полезна в длительных циклах.

Function Odd(X: LongInt): Boolean;

Возвращает True, если X - нечетное число и False в противном случае.

Function Pred(X);

Возвращает предыдущее значение параметра.

X - выражение перечислимого типа. Результат того же самого типа.

Function Succ(X);

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

X - выражение перечислимого типа. Результат того же самого типа.

Процедуры и функции преобразования величин

Модуль System

Procedure Str(X [: Width [: Decimals]]; var S);

Преобразовывает число X в строковое представление согласно Width и параметрам форматирования Decimals.

X - выражение вещественного или целого типа. Width и Decimals - выражения целого типа. S - переменная типа String или символьный массив с нулевым окончанием, если допускается расширенный синтаксис.

Function Chr(X: Byte): Char;

Возвращает символ с порядковым номером Х в ASCII-таблице.

Function High(X);

Возвращает наибольшее значение в диапазоне параметра.

Function Low(X);

Возвращает наименьшее значение в диапазоне параметра.

Function Ord(X): LongInt;

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

X - выражение перечислимого типа.

Function Round(X: Extended): LongInt;

Округляет значение вещественного типа до целого.

X - выражение вещественного типа. Round возвращает значение Longint, которое является значением X, округленным до ближайшего целого числа. Если X - точно посередине между двумя целыми числами, возвращается число с наибольшей абсолютной величиной.

Если округленное значение X выходит за диапазон LongInt, генерируется ошибка времени выполнения программы, которую вы можете обработать с использованием исключительной ситуации EInvalidOp .

Function Trunc(X: Extended): LongInt;

Усекает значение вещественного типа до целого.

Если округленное значение X выходит за диапазон LongInt, генерируется ошибка времени выполнения программы, которую вы можете обработать с использованием исключительной ситуации EInvalidOp .

Procedure Val(S; var V; var Code: Integer);

Преобразовывает число из строкового значения S в числовое представление V.

S - выражение строкового типа - последовательность символов, которая формирует целое или вещественное число.

Если выражение S недопустимо, индекс неверного символа сохраняется в переменной Code. В противном случае Code устанавливается в ноль

Процедуры и функции работы с датой и временем

Модуль SysUtils

Function Date: TDateTime;

Возвращает текущую дату.

Function DateTimeToStr(DateTime: TDateTime): String;

Преобразовывает параметр типа TDateTime, содержащий дату и время, в строку. Если параметр DateTime не содержит значения даты, дата устанавливается в 00/00/00. Если параметр DateTime не содержит значения времени, время устанавливается в 00:00:00.

Function DateToStr(Date: TDateTime): String;

Преобразовывает параметр типа TDateTime, содержащий дату, в строку.

Преобразование использует формат, определенный глобальной переменной ShortDateFormat.

Function DayOfWeek(Date: TDateTime): Integer;

Возвращает день недели определенной даты как целое число между 1 и 7. Воскресенье - первый день недели, и суббота - седьмой.

Procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

Извлекает дату из формата TDateTime и помещает год, месяц и день соответственно в переменные Year, Month и Day.

Procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);

Извлекает время из формата TDateTime и помещает часы, минуты, секунды, и миллисекунды соответственно в переменные Hour, Min, Sec и MSec.

Function EncodeDate(Year, Moth, Day: Word): TDateTime;

Возвращает дату в формате TDateTime, полученную из значений параметров Year, Month и Day.

Year должен быть между 1 и 9999.

Допустимые значения Month - от 1 до 12.

Допустимые значения Day - от 1 до 28, 29, 30, или 31, в зависимости от значения Month. Например, возможные значения Day в течение второго месяца (февраля) - от 1 до 28, или от 1 до 29, в зависимости от того, определяет или нет значение Year високосный год.

Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError. Возникающее в результате значение - единица плюс число дней между 30/12/1899 и данной датой.

Function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

Возвращает время в формате TDateTime, полученное из значений параметров Hour, Min, Sec и MSec.

Если значение типизированной константы Time24Hour ложно (False), значения Hour лежат в пределах от 0 до 12, если истинно (True) - от 0 до 23.

Допустимые значения Min и Sec - от 0 до 59. Допустимые значения MSec - от 0 до 999.

Если значения находятся вне диапазона, возникает исключительная ситуация EConvertError.

Function Now: TDateTime;

Возвращает текущую дату и время в формате TDateTime (дата + время).

Function StrToDate(const S: String): TDateTime;

Преобразовывает строковое представление даты в формат TDateTime. Дата в параметре S должна быть записана по правилам Windows, т.е. должна состоять из двух или трех чисел, отделяемых символом, определенным в глобальной переменной DateSeparator. Порядок следования месяца, дня и года определен в глобальной переменной ShortDateFormat. Возможные комбинации - m/d/y, d/m/y, и y/m/d.

Если строка содержит только два числа, это интерпретируется как дата (m/d или d/m) в текущем году. Значения Year между 0 и 99 означают год в текущем столетии.

Если строка содержит дату в неверном формате, возбуждается исключительная ситуация EConvertError.

Function StrToTime(Const S: String): TDateTime;

Преобразовывает строковое представление времени в формат TDateTime.

Строка должна состоять из двух или трех чисел, отделяемых символом, определенным в глобальной переменной TimeSeparator. Числа представляют собой часы, минуты, и (необязательно) секунды, в соответствующем порядке.

Если строка содержит время в неверном формате, возбуждается исключительная ситуация EConvertError.

Function Time: TDateTime;

Возвращает текущее время.

Function TimeToStr(Time: TDateTime): String;

Преобразовывает время из формата TDateTime в строковое представление.

Преобразование использует формат, определенный в глобальной переменной LongTimeFormat. Вы можете изменять формат отображения времени, изменяя значения переменных даты и времени (или используя Панель управления Windows).

Функции форматирования

Модуль SysUtils

Function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): String;

Преобразовывает число с плавающей запятой, в строковое представление.

Параметр Format определяет формат результирующей строки.

Параметр Precision определяет точность данного значения. Он должен быть равен 7 или меньше для значений типа Single, 15 или меньше для значений типа Double и 18 или меньше для значений типа Extended.

Значение параметра Digit зависит от выбранного формата.

Возможные значения параметра Format описаны ниже.

ffGeneral - общий формат числа. Значение преобразовывается в самую короткую возможную десятичную строку, использующую фиксированный или научный формат. Конечные нули удаляются, а десятичная точка появляется только в случае необходимости. Параметр Digit определяет минимальное число цифр в порядке числа (между 0 и 4).

ffExponent - научный формат. Значение преобразовывается в строку вида «-d. ddd … E + dddd». Общее количество цифр в результирующей строке (включая одну перед десятичной точкой) определяется параметром Precision. Параметр Digit определяет минимальное число цифр в порядке числа (между 0 и 4).

ffFixed - фиксированный формат. Значение преобразовывается в строку вида «-ddd. ddd …». Число цифр после десятичной точки определяется параметром Digit и должно быть не больше 18. Если число цифр слева от десятичной точки больше, чем определено в параметре Precision, используется научный формат.

ffNumber - числовой формат. Значение преобразовывается в строку вида «-d, ddd, ddd.ddd …». Формат ffNumber соответствует формату ffFixed, за исключением того, что возникающая в результате строка содержит разделитель тысяч.

ffCurrency - денежный формат. Значение преобразовывается в строку, которая представляет собой денежную величину. Преобразование управляется глобальными переменными CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator и DecimalSeparator, которые определяются соответствующими значениями раздела «Язык и стандарты» Панели управления Windows. Число цифр после десятичной точки определяется параметром Digits и должно быть не больше 18.

Если параметр Value принимает бесконечное значение (с плюсом или минусом), функция возвращает соответственно «INF» или «-INF».

Function StrToFloat(const S: String): Extended;

Преобразовывает данную строку в число с плавающей запятой. Строка должна состоять из необязательного знака (+ или -), последовательности цифр с необязательной десятичной точкой и необязательным «E» или «e», сопровождаемым целым числом со знаком.

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

Function IntToStr(Value: Integer): String;

Преобразовывает целое число в строку.

Function StrToInt(const S: String): Integer;

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

Разные процедуры и функции

Модуль System

Function Hi(X): Byte;

Возвращает старший байт X как целое значение без знака. X - выражение типа Integer или Word.

Function Lo(X): Byte;

Возвращает байт младшего разряда параметра X как целое значение без знака. X - выражение типа Integer или Word.

Function Random[(Range: Integer)];

Возвращает случайное число внутри диапазона 0

Если параметр Range не определен, возвращается случайное число в диапазоне 0

Procedure Randomize;

Инициализирует встроенный генератор случайных чисел произвольным значением (полученным из часов системы).

Function SizeOf(X): Integer;

Возвращает размер объекта X в байтах.

X является переменной или идентификатором типа.

Всегда используйте SizeOf при обращениях к GetMem и т.п.

 
doc/delphi/object_pascal.txt · Последние изменения: 2006/05/10 14:03 (внешнее изменение)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki