
- •Введение
- •Описание типов
- •Простые типы данных
- •Порядковые типы
- •Целые типы
- •Логические типы
- •Символьный тип
- •Перечисляемый тип
- •Тип-диапазон
- •Вещественные типы
- •Тип дата-время
- •Строковые типы
- •Преобразование типов
- •Приведение типов
- •Операторы
- •Арифметические операторы
- •Логические операторы
- •Оператор присваивания
- •Оператор SizeOf
- •Операторы ввода-вывода
- •Оператор write
- •Оператор read
- •Комментарии в программах
- •Директивы компилятора
- •Директивы условной компиляции
- •Задания к лабораторной работе
- •Вопросы к лабораторной работе

Таблица 95 – Подпрограммы для работы со строками
Подпрограмма |
|
Описание |
|
|
|
|
|
|
function Copy (Source: string; |
|
Копирует из строки Source Count символов, |
Index, Count: Integer):string; |
|
начиная с символа с номером Index. |
procedure Delete ( |
|
Удаляет Count символов из строки Source, |
var Source: string; |
|
начиная с символа с номером индекс. |
Index, Count: Integer); |
|
|
procedure Insert (SubSt: string; |
|
Вставляет подстроку SubSt в строку St, |
var St: string; |
|
начиная с символа с номером Index. |
Indext: Integer); |
|
|
function Length |
|
Возвращает текущую длину строки. |
(S:string):integer; |
|
|
function Pos ( |
|
Отыскивает в строке St первое вхождение |
SubSt, St:string):integer; |
|
подстроки SubSt и возвращает номер |
|
|
позиции с которой она начинается. Если |
|
|
подстрока не найдена возвращается ноль. |
|
|
|
Преобразование типов
При написании программ часто бывает необходимым преобразовать тип переменной. Близкие типы можно преобразовывать с помощью следующей конструкции.
<идентификатор типа>(<переменная>)
Например преобразование типа переменной Integer к типу Word выглядит следующим образом
var i: Integer;
j:Word;
...
j:=Word(i);
В таблице 10 приведены стандартные функции преобразования типов.
Таблица 10 – Стандартные функции преобразования типов
Подпрограмма |
|
Описание |
|
|
|
|
|
|
function Trunc(X:real):Integer; |
|
Отсекает дробную часть числа |
function Round(X:real):Integer; |
|
Округляет вещественное число до целого по |
|
|
правилам арифметики |
function Val(St:string; |
|
Преобразует строку символов St в |
var X; Code:Integer); |
|
вещественную или целую переменную (в |
|
|
зависимости от типа переменной X). |
|
|
Параметр Code содержит индекс символа |
|
|
который вызвал ошибку при преобразовании |
|
|
или 0 если ошибки не произошло. |
|
|
|
5 Функции приведенные в этой таблице применимы к типам AnsiString и ShortString.

Подпрограмма |
Описание |
|
|
|
|
procedure Str( |
Преобразует число X любого вещественного |
X [:Width:[:Decimals]]; |
или целого типа в строку символов St. |
var St:string); |
Параметры Width и Decimals, если они |
|
присутствуют, задают общую ширину поля, |
|
выделенную под символьное представление |
|
числа, и количество символов в дробной |
|
части соотвественно. |
В таблице 11 представлены некоторые подпрограммы для преобразования типов из модуля SysUtils, который можно подключить как показано выше.
Таблица 11 – Подпрограммы преобразования типов модуля SysUtils.
Подпрограмма |
|
|
Описание |
|
|
|
|
|
|
|
|
function StrToInt( |
|
|
Преобразование из строки в целое число |
s:string):Integer; |
|
|
|
function StrToFloat( |
|
|
Преобразование из строки в вещественное |
s:string):Extended; |
|
|
число |
function IntToStr( |
|
|
Преобразование из целого числа в строку |
Value:Integer):string; |
|
|
|
function FloatToStr( |
|
|
Преобразование из вещественного числа в |
Value:Extended):string; |
|
|
строку |
function FloatToStrF( |
|
|
Преобразование из вещественного числа в |
Value:Extended; |
|
|
строку. Параметр Format определяет |
Format:TFloatFormat; |
|
|
текстовое представление числа в строке. |
Precision, Digits):string; |
|
||
|
|
||
Рассмотрим функцию FloatToStrF подробнее. |
|||
function FloatToStrF( |
Value:Extended;Format:TFloatFormat; |
||
TOL, Digits):string; |
|
|
|
Здесь Value – число, которое нужно преобразовать;
Format – определяет формат, в котором будет выведено число, см. таблицу ; Precision – точность (до какого знака будет выполнено округление);
Digits – число выводимых цифр после десятичного разделителя либо в степени экспоненты.
Таблица 12 – Значения типа TFloatFormat
Значение |
|
Описание |
|
|
|
|
|
|
ffGeneral |
|
Универсальный формат, в который стремится сохранить результирующее |
|
|
значение как можно компактнее, удаляются конечные нули и десятичный |
|
|
разделитель, где это возможно, разделители тысяч не показываются. |
|
|
Экспоненциальный формат используется, если мантисса является |
|
|
слишком большой для указанного значения Precision, при этом значение |
|
|
Digits (0.. 4) определяет минимальное число показываемых цифр |
|
|
экспоненты. Символ, разделитель целой и дробной части хранится в |
|
|
переменной DecimalSeparator. |

Значение |
Описание |
|
|
|
|
ffExponent |
Инженерный формат, экспонента обозначается символом E следующей |
|
за числом. Запись E+15 означает 1015. Экспонента всегда имеет знак + |
|
или -. Этой экспоненте предшествует число, которое всегда имеет одну |
|
цифру перед десятичной точкой. |
|
Используемый функцией параметр Precision дает число отображаемых |
|
цифр перед E, а параметр Digits дает число цифр (0..4) после E. |
ffFixed |
Отображает Precision цифр перед десятичной точкой, и Digits цифр |
|
после. Если слишком много цифр перед десятичной точкой, то вместо |
|
этого используется экспоненциальный формат. |
ffCurrency |
То же самое, что и ffNumber, но с добавлением символа (строки) |
|
денежной единицы, который определен переменной CurrencyString. |
ffNumber |
То же самое, что и ffFixed, за исключением того, что используется |
|
разделитель тысяч. Они определены переменной ThousandSeparator. |
Например при выполнении следующего кода
writeln(FloatToStrF(1/3, ffFixed, 4, 5)); writeln(FloatToStrF(1/3, ffFixed, 3, 5)); writeln(FloatToStrF(1/3, ffExponent, 3, 2)); writeln(FloatToStrF(1/3, ffExponent, 3, 4));
writeln(FloatToStrF(1/3, ffExponent, 5, 4));
будет выведено
0,33330
0,33300
3,33E-01
3,33E-0001
3,3333E-0001
Символ разделителя дробной и вещественной части хранится в глобальной переменной DecimalSeparator модуля SysUtils. По умолчанию её значение берется из системной локали (для русской локали это запятая), если необходимо заменить этот символ на другой, например точку, то это нужно сделать самостоятельно.
Приведение типов
Приведение типов – это способность компилятора рассматривать переменную одного типа как переменную другого типа. В отличие от функций преобразования типов, таких как, Round, Trunc и т. п при приведении типа не происходит изменения данных, т. е. нет потери производительности. Приведение типа записывается следующим образом
имя типа(имя переменной)
Например,
var b:Boolean; begin
b:=True;
writeln(b);
writeln(integer(b));
writeln(Single(integer(b)));
end.
Будет выведено
TRUE 1
1.401298464E-45