Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
Таблица 3. Предопределенные константы операций с переменными типа Цвет (Color)
Код Обозначение Вычисляемое выражение Тип результата Пояснение 1 CEqual A=B Logic Полное совпадение. 2 CIn A And B = A Logic A содержится в В. 3 CInclude A And B = B Logic А содержит В. 4 CExclude A And B = 0 Logic A и В взаимоисключающие. 5 CIntersect A And B <> 0 Logic А и В пересекаются. 6 COr A Or B Сolor Побитное включающее или. 7 CAnd A And B Color Побитное и. 8 CXor A Xor B Color Побитное исключающее или 9 CNot Not A Color Побитное отрицаниеВ табл. 3 приведены операции с переменными типа Color. Первые пять операций могут использоваться только для сравнения переменных типа Color, а остальные четыре операции — для вычисления выражений типа Color.
В ряде запросов необходимо указать тип операции над цветом. Для передачи таких параметров используется переменная типа Integer. В качестве значений передается содержимое соответствующей ячейки столбца код табл. 3.
Приведение и преобразование типов
Есть два пути использовать переменную одного типа как переменную другого типа. Первый путь состоит в преобразовании значения к заданному типу. Так, для преобразования целочисленной переменной к действительному типу, достаточно просто присвоить переменной действительного типа целочисленное значение. С обратным преобразованием сложнее, поскольку не ясно что делать с дробной частью. В табл. 4 приведены все типы, которые можно преобразовать присваиванием переменной другого типа. В табл. 5 приведены все функции преобразования типов.
Таблица 4. Преобразование типов прямым присваиванием переменной значения выражения
Тип переменной Тип выражения Пояснение Real Real, Integer, Long Значение преобразуется к плавающему виду. При преобразовании значения выражения типа Long возможна потеря точности. Long Integer, Long При преобразовании типа Integer, действуют следующие правила. Значение переменной помещается в два младших байта. Если значение выражения больше либо равно нолю, то старшие байты равны H0000, в противном случае старшие байты равны HFFFF. Integer Integer, Long При преобразовании выражения типа Long значение двух старших байт отбрасывается.Таблица 5. Функции преобразования типов
Имя функции Тип аргумента Тип результата Описание Real Real, Integer, Long Real Аналогично прямому присваиванию Integer Integer, Long Integer Аналогично прямому присваиванию Long Integer, Long Long Аналогично прямому присваиванию Str Real, Long, Integer String Представляет числовой аргумент в виде символьной строки в десятичном виде Round Real Long Округляет действительное значение до ближайшего длинного целого. Если значение действительного выражения выходит за диапазон длинного целого, то результат равен нулю. Truncate Real Long Преобразует действительное значение в длинное целое путем отбрасывания дробной части. Если значение действительного выражения выходит за диапазон длинного целого, то результат равен нулю. LVal String Long Преобразует длинное целое из символьного представления во внутреннее. RVal String Real Преобразует действительное число из символьного представления во внутреннее. StrColor Color String Преобразует внутреннее представление переменной типа Color в соответствии с разд. «Значение переменной типа цвет» ValColor String Color Преобразует символьное представление переменной типа Color во внутреннее. Color Integer Color Интерпретирует целое число как значение типа Color.При вычислении числовых выражений действуют следующие правила преобразования типов:
1. Выражения вычисляются слева на право.
2. Если два операнда имеют один тип, то результат имеет тот же тип.
3. Если аргументы имеют разные типы, то выражение имеет старший из двух типов. Список числовых типов по убыванию старшинства: Real, Long, Integer.
4. Результат операции деления действительных чисел (операция «/») всегда имеет тип Real, вне зависимости от типов аргументов.
В отличие от преобразования типов приведение типов позволяет по-разному интерпретировать одну область памяти. Функция приведения типа применима только к переменным или элементам массива (преобразование типов применимо и к выражениям). Рекомендуется использовать приведение типов только для типов, имеющих одинаковую длину. Например, Integer и Color или Real и Long. Список функций приведения типов приведен в табл. 6.
Таблица 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 Четыре байта, адресуемые приводимой переменной, интерпретируются как отображаемый элемент.Следующие примеры иллюстрируют использование преобразования и приведения типов: