Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

varLongword

$0013

Переменная содрежит значение типа Longword

varInt64

$0014

Переменная содержит значение типа Int64

 

 

Переменная содержит строку, совместимую со

varStrArg

$0048

стандартом COM, принятым в операционной

 

 

системе Windows.

varString $0100

varAny $0101

Флаги varTypeMask $0FFF varArray $2000 varByRef $4000

Переменная содержит ссылку на длинную строку.

Переменная содержит значение любого типа данных технологии CORBA

Маска для выяснения типа значения. Переменная содержит массив значений. Переменная содержит ссылку на значение.

Таблица 2.10. Коды и флаги варьируемых переменных

Функция

VarAsType(const V: Variant; VarType: Integer): Variant;

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

V1 := '100';

V2 := VarAsType(V1, varInteger);

Пока это все, что нужно знать о типе Variant, но мы к нему еще вернемся при обсуждении технологии COM Automation.

2.20. Delphi + ассемблер

В процессе разработки программы вы можете неожиданно обнаружить, что описанных выше средств языка Delphi для решения некоторых насущных проблем явно недостаточно. Например, организация критичных по времени вычислений требует использования ассемблера. Кроме того, часто возникает необходимость включить в программу на языке Delphi откомпилированные ранее процедуры и функции, написанные на ассемблере. Разработчики языка учли эти проблемы и дали программисту необходимые средства их решения.

2.20.1. Встроенный ассемблер

Пользователю предоставляется возможность делать вставки на встроенном ассемблере в исходный текст на языке Delphi.

150

К встроенному ассемблеру можно обратиться с помощью зарезервированного слова asm, за которым следуют команды ассемблера и слово end:

asm

<оператор ассемблера>

...

<оператор ассемблера> end;

На одной строке можно поместить несколько операторов ассемблера, разделенных двоеточием. Если каждый оператор размещен на отдельной строке, двоеточие не ставится.

В языке Delphi имеется возможность не только делать ассемблерные вставки, но писать процедуры и функции полностью на ассемблере. В этом случае тело подпрограммы ограничивается словами asm и end (а не begin и end), между которыми помещаются инструкции ассемблера. Перед словом asm могут располагаться объявления локальных констант, типов, и переменных. Например, вот как могут быть реализованы функции вычисления минимального и максимального значения из двух целых чисел:

function

Min(A, B: Integer): Integer; register;

asm

EDX, EAX

CMP

JGE

@@1

MOV

EAX, EDX

@@1:

 

end;

 

function

Max(A, B: Integer): Integer; register;

asm

EDX, EAX

CMP

JLE

@@1

MOV

EAX, EDX

@@1:

 

end;

 

Обращение к этим функциям имеет привычный вид:

Writeln(Min(10, 20));

Writeln(Max(10, 20));

2.20.2. Подключение внешних подпрограмм

Программисту предоставляется возможность подключать к программе или модулю отдельно скомпилированные процедуры и функции, написанные на

151

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]