Главная » Delphi » Получение информации о перечислимых типах

0

Итак, наиболее сложная часть  RTTI  уже позади.  Для более  простых типов  также можно  получить информацию о типах  времени выполнения. В следующих  разделах показано, как получить данные  RTTI  для целого  и перечислимого типов, а также  для множества.

Информация  RTTI о целочисленных типах

Получить информацию RTTI  о целочисленных типах  очень  просто. Листинг 10.5 иллюстрирует этот процесс.

Листинг 10.5. Получение информации RTTI о целочисленных типах

procedure TMainForm.lbSampsClick(Sender: TObject);

var

OrdTypeInfo: PTypeInfo;

OrdTypeData: PTypeData;

TypeNameStr: String;

TypeKindStr: String;

MinVal, MaxVal: Integer;

begin

memInfo.Lines.Clear;

with lbSamps do begin

// Получить указатель на структуру TTypeInfo

OrdTypeInfo := PTypeInfo(Items.Objects[ItemIndex]);

// Получить указатель на структуру TTypeData

OrdTypeData := GetTypeData(OrdTypeInfo);

// Получить строку по имени типа

TypeNameStr := OrdTypeInfo.Name;// Получить строку с разновидностью типа

TypeKindStr := GetEnumName(TypeInfo(TTypeKind),

Integer(OrdTypeInfo^.Kind));

// Получить минимальные и максимальные значения для типа

MinVal := OrdTypeData^.MinValue;

MaxVal := OrdTypeData^.MaxValue;

// Добавить информацию в поле memo with memInfo.Lines do begin

Add(‘Type Name: ‘+TypeNameStr); Add(‘Type Kind: ‘+TypeKindStr); Add(‘Min Val: ‘+IntToStr(MinVal)); Add(‘Max Val: ‘+IntToStr(MaxVal));

end;

end;

end;Здесь   функция  TypeInfo() используется  для  получения  указателя   на  структуру TTypeInfo для типа  данных  Integer. Затем  этот  указатель  передается функции  Get- TypeData() для получения указателя  на структуру TTypeData. Обе эти структуры  исполь зуются для помещения в список  информации RTTI о целочисленном типе.  Более  подроб ный демонстрационный вариант IntegerRTTI.dpr можно  найти на прилагаемом CD, в каталоге, относящемся к данной главе.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии