Таблица 6. Функции приведения типов
Название |
Тип результата |
Описание |
Treal |
Real |
Четыре байта, адресуемые приводимой переменной, интерпретируются как действительное число. |
Tinteger |
Integer |
Два байта, адресуемые приводимой переменной, интерпретируются как целое число. |
Tlong |
Long |
Четыре байта, адресуемые приводимой переменной, интерпретируются как длинное целое. |
TrealArray |
RealArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив действительных чисел. |
TPRealArray |
PRealArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив действительных чисел. |
TintegerArray |
IntegerArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив целых чисел. |
TPIntegerArray |
PIntegerArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив целых чисел. |
TlongArray |
LongArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив длинных целых. |
TPLongArray |
PLongArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив длинных целых. |
Tlogic |
Logic |
Адресуемый приводимой переменной байт интерпретируются как логическая переменная. |
TlogicArray |
LogicArray |
Область памяти, адресуемая приводимой переменной, интерпретируются как массив логических переменных. |
TPLogicArray |
LogicArray |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на массив логических переменных. |
TColor |
Color |
Два байта, адресуемые приводимой переменной, интерпретируются как переменная типа цвет. |
TFuncType |
FuncType |
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес функции. |
TPointer |
Pointer |
Четыре байта, адресуемые приводимой переменной, интерпретируются как адрес. |
Tstring |
String |
256 байт области памяти, адресуемой приводимой переменной, интерпретируются как строка символов. |
TPString |
PString |
Четыре байта, адресуемые приводимой переменной, интерпретируются как указатель на строку символов. |
Tvisual |
Visual |
Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент. |
Следующие примеры иллюстрируют использование преобразования и приведения типов:
При вычислении следующих четырех выражений, получаются различные результаты
4096 * 4096 = 0
Поскольку константа 4096 имеет тип Integer, а 4096 * 4096 = 16777216 = 256 * 65536, то есть младшие два байта результата равны нулю.
Long(4096 * 4096) = 0
Поскольку оба сомножителя имеет тип Integer, то и выражение имеет тип Integer. Следовательно, результат умножения равен нулю, который затем преобразуется к типу Long.
Long(4096) * 4096 = 16777216
Поскольку первый сомножитель имеет тип длинное целое, то и выражение имеет тип длинное целое.
4096.0 * 4096 = 1.677722E+7
Поскольку первый сомножитель имеет тип Real, то и выражение имеет тип Real. Из-за недостатка точности произошла потеря точности в седьмом знаке.
В следующем примере, используя приведение типов, в массив действительных чисел A размером в 66 элементов складываются: действительное число в первый элемент массива; длинное целое во второй элемент массива и символьную строку в элементы с 3 по 66.
A[1] = 1.677722E+7
TLong(A[2]) = 16777216
TString(A[3]) = ‘Пример приведения типов’
Необходимо отметить, что элементы массива A, начиная со второго, после выполнения приведенного выше фрагмента программы не рекомендуется использовать как действительные числа, поскольку элемент A[2] содержит значение 2.350988Е-38, а элемент A[5] — значение –4.577438Е-18. Значение элементов, начиная с A[8] (символьная строка ‘Пример приведения типов’ содержит 23 символа и занимает 24 байта, то есть шесть элементов массива) вообще не зависят от приведенного фрагмента программы и содержат «мусор», который там находился ранее.
В списке типов определены только одномерные массивы. Однако, при необходимости, возможно использование двумерных массивов. Для этого в одномерный массив A необходимо поместить указатели на одномерные массивы. При этом I,J-й элемент двумерного массива записывается в виде:
TPRealArray(A[I])^[J]
В этом примере использована функция приведения типов TPRealArray, указывающая, что I-й элемент массива A нужно интерпретировать как указатель на одномерный массив действительных чисел, и операция «^» указывающая, что вместо указателя на массив TPRealArray(A[I]) используется массив, на который он указывает.
Читать дальше