Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Визначення типу варіантних змінних

Читайте также:
  1. IV. Виконати тест «Педагогічні ситуації» на визначення рівня розвитку педагогічних здібностей майбутніх інженерів-педагогів, зробити самостійні висновки.
  2. Алгоритм визначення дотацій вирівнювання
  3. Аналіз ступеня вільності механізму. Наведемо визначення механізму, враховуючи нові поняття.
  4. Балансово-розрахунковий метод визначення поживної речовини, яку необхідно внести з мінеральними добривами (для сівозміни № 17).
  5. Визначення агресії
  6. Визначення активності лужної фосфатази в сироватці крові
  7. Визначення білірубіну за методом Бокальчука

Змінна типу Variant займає в пам'яті шістнадцять байт, в яких знаходиться інформація про тип даних (код типу), що зберігаються в даний момент в даній змінній і самі дані, або покажчик на них. Можливі коди типів даних для варіантних змінних, описані в модулі System, представлені в таблиці 1.

Для визначення типу даних, що зберігаються у варіантній змінній, використовується функція Vartype, описана в модулі Variants в наступному вигляді:

Function Vartype (const V: Variant): Tvartype;

Значення яке повертає функція Vartype має тип аналогічний типу Word і містить інформацію про тип даних, а також про те, чи є значення, що зберігається в змінній, масивом або покажчиком. Молодші дванадцять біт (три останні шістнадцяткові цифри) цього значення містять код типу, відповідний константам, приведеним в таблиці. 4, а в старших чотирьох бітах можуть знаходитися наступні значення:

· нульове значення $0000 - указує на те, що дані заявленого типу зберігаються безпосередньо у варіантній змінній;

· значення $2000 (константа varArray модуля System) - указує на те, що дані, які зберігаються, є масивом елементів, що мають тип, визначуваний кодом типу даних;

· значення $4000 (константа varByRef модуля System) - указує на те, що дані, що зберігаються, є посиланням на відповідний тип даних, який визначається кодом типу даних.

Таблиця 1

Коди типів варіантних змінних

Константа Тип даних Значення
varEmpty Значення не визначене $000
varNull Порожнє значення $001
varSmallint Smallint $002
varInteger Integer $003
varSingle Single $004
varDoudle Double $005
varCurrency Currency $006
varDate TDateTime $007
varQleStr Посилання на AnsiString $008
varDispatch Посилання на інтерфейс Dispatch $009
varBoolean Word Bool $00B
varVanant Variant $00C
varUnknown Посилання на інтерфейс IInterface або IUnknown $00D
varShortint Shortint $010
varByte Byte $011
varWorO Word $012
varLongWord LongWocd $013
varInt64 Int64 $014
varStrArg Посилання на рядок, сумісний з СОМ $048
varString Посилання на рядок, не сумісний з СОМ $100

Для виділення частини значення, що містить код типу даних, передбачена константа vartypemask (значення i $0FFF), за допомогою якої можна відокремити код типу даних від додаткових ознак:

<Змінна типу Variant> and vartypemask

Як приклад використання описаних вище методів приведемо фрагмент програми, що формує рядок S, що містить докладну інформацію про тип варіантної змінної V.

S:= 'Data element type:';

Case Vartype(V) and vartypemask of

varempty: S:= S + ‘The variant is Unassigned’;

varnull: S:= S + ‘The variant is Null’;

varSmallint: S:= S + '16 bit signed integer (type Smallint)';

varInteger: S:= S + '32-bit signed integer (type Integer)';

varSingle: S:= S + ‘Single-precision floating-point value (type Single)’;

varDouble: S:= S + ‘Duble-precision floating-point value (type Double)';

varCurrency: S:= S + ‘Currency floating-point value (type Currency)’;

varDate: S:= S + 'Date and time value (type Tdatetime)';

varOleStr: S:= S + 'Reference to а dynamically allocated UNICODE String';

varDispatch: S:= S + 'Reference to an Automation object';

varBoolean: S:= S + '16-bit boolean (type WordBool)';

varVariant: S:= S + 'A variant';

varUncnown: S:= S + 'Reference to an unknown OLE object';

varShortInt: S:= S + '8 bit signed integer (type ShortInt)';

varByte: S:= S + 'A Byte';

varWord: S:= S + 'Unsigned 16-bit value (Word)';

varLongword: S:= S + 'Unsigned 32-bit value (Longword)';

varInt64: S:= S + '64-bit signed integer(Int64)';

varStrArg: S:= S + 'Com-compatible string';

varString: S:= S + 'Reference to а dynamically allocated string';

end;

if (Vartype(V) and vararray) = vararray then S:= S + it is an array';

if (Vartype(V) and varbyref) = varbyref then S:= S + 'it is а reference';

Таким чином, якщо в змінній V знаходиться значення 200, то після виконання даного фрагмента програми значенням змінної s буде рядок 'Data element type: A Byte'. якщо змінній V задати значення 1221.66, то в змінній S буде рядок 'Data element type: Currency floating-point value (type Currency)'. Якщо ж значення змінної V буде строковрядковимим, наприклад, ‘4 221. 66’, то значенням змінної s буде такий рядок: 'Data element type: Reference to а dynamically allocated string'.


Дата добавления: 2015-07-11; просмотров: 130 | Нарушение авторских прав


Читайте в этой же книге: Приклад розв’язування системи лінійних рівнянь | Завдання | Одержання та дослідження колоїдних розчинів срібла. | Кадровий облік | Звіти з кадрового обліку, з нарахування і виплати зарплати | Нарахування зарплати | Особливості обліку ПДФО | Виплата зарплати | Введення початкових залишків по зарплаті | Типізовані покажчики |
<== предыдущая страница | следующая страница ==>
Динамічні масиви| Автоматичне приведення типів

mybiblioteka.su - 2015-2024 год. (0.008 сек.)