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

0

Получить информацию RTTI о перечислимых типах  также  несложно. Как видите, листинг 10.6 практически идентичен листингу 10.5, за исключением дополнительного цикла for, отображающего значения перечислимого типа.

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

procedure TMainForm.lbSampsClick(Sender: TObject);

var

OrdTypeInfo: PTypeInfo;

OrdTypeData: PTypeData;

TypeNameStr: String;

TypeKindStr: String;

MinVal, MaxVal: Integer;

i: 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));

// Отобразить значения и имена перечислимых типов

if OrdTypeInfo^.Kind = tkEnumeration then

for i := MinVal to MaxVal do

Add(Format(‘            Value: %d   Name: %s’,

[i, GetEnumName(OrdTypeInfo, i)]));

end;

end;

end;Более  подробный демонстрационный вариант  EnumRTTI.dpr можно   найти на прилагаемом CD, в каталоге, относящемся к данной главе.

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

По теме:

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