System.TypInfo.TTypeData

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

  TTypeData = packed record
    function NameListFld: TTypeInfoFieldAccessor; inline;
    function UnitNameFld: TTypeInfoFieldAccessor; inline;
    function IntfUnitFld: TTypeInfoFieldAccessor; inline;
    function DynUnitNameFld: TTypeInfoFieldAccessor; inline;
    function PropData: PPropData; inline;
    function IntfMethods: PIntfMethodTable; inline;
    function DynArrElType: PPTypeInfo; inline;
    function DynArrAttrData: PAttrData; inline;
    function GUID: TGUID; inline;
    case TTypeKind of
      tkUnknown: ();
      tkUString,
{$IFNDEF NEXTGEN}
      tkWString,
{$ENDIF !NEXTGEN}
      tkVariant: (AttrData: TAttrData);
      tkLString: (
        CodePage: Word
       {LStrAttrData: TAttrData});
      tkInteger, tkChar, tkEnumeration, tkWChar: (
        OrdType: TOrdType;
        case TTypeKind of
          tkInteger, tkChar, tkEnumeration, tkWChar: (
            MinValue: Integer;
            MaxValue: Integer;
            case TTypeKind of
              tkInteger, tkChar, tkWChar: (
                {OrdAttrData: TAttrData});
              tkEnumeration: (
                BaseType: PPTypeInfo;
                NameList: TSymbolName;
               {EnumUnitName: TSymbolName;
                EnumAttrData: TAttrData})));
      tkSet: (
        SetTypeOrSize: UInt8;
        CompType: PPTypeInfo;
        {SetAttrData: TAttrData;
         SetLoByte: UInt8;
         SetSize: UInt8});
      tkFloat: (
        FloatType: TFloatType
       {FloatAttrData: TAttrData});
{$IFNDEF NEXTGEN}
      tkString: (
        MaxLength: Byte
       {StrAttrData: TAttrData});
{$ENDIF !NEXTGEN}
      tkClass: (
        ClassType: TClass; // most data for instance types is in VMT offsets
        ParentInfo: PPTypeInfo;
        PropCount: SmallInt; // total properties inc. ancestors
        UnitName: TSymbolName;
       {PropData: TPropData;
        PropDataEx: TPropDataEx;
        ClassAttrData: TAttrData;
        ArrayPropCount: Word;
        ArrayPropData: array[1..ArrayPropCount] of TArrayPropInfo;});
      tkMethod: (
        MethodKind: TMethodKind; // only mkFunction or mkProcedure
        ParamCount: Byte;
{$IFNDEF NEXTGEN}
        ParamList: array[0..1023] of AnsiChar
{$ELSE NEXTGEN}
        ParamList: array[0..1023] of Byte
{$ENDIF NEXTGEN}
       {ParamList: array[1..ParamCount] of
          record
            Flags: TParamFlags;
            ParamName: ShortString;
            TypeName: ShortString;
          end;

C++

struct DECLSPEC_DRECORD TTypeData
{
public:
    TTypeInfoFieldAccessor __fastcall NameListFld();
    TTypeInfoFieldAccessor __fastcall UnitNameFld();
    TTypeInfoFieldAccessor __fastcall IntfUnitFld();
    TTypeInfoFieldAccessor __fastcall DynUnitNameFld();
    PPropData __fastcall PropData();
    PIntfMethodTable __fastcall IntfMethods();
    PPTypeInfo __fastcall DynArrElType();
    PAttrData __fastcall DynArrAttrData();
    GUID __fastcall GUID();
public:
    union
    {
        struct
        {
            TArrayTypeData ArrayData;
        };
        struct
        {
            PTypeInfo *RefType;
            TAttrData PtrAttrData;
        };
        struct
        {
            PTypeInfo *InstanceType;
            TAttrData ClassRefAttrData;
        };
        struct
        {
            int RecSize;
            int ManagedFldCount;
        };
        struct
        {
            int elSize;
            PTypeInfo *elType;
            int varType;
            PTypeInfo *elType2;
            TSymbolNameBase DynUnitName;
        };
        struct
        {
            __int64 MinInt64Value;
            __int64 MaxInt64Value;
            TAttrData Int64AttrData;
        };
        struct
        {
            PTypeInfo *IntfParent;
            TIntfFlagsBase IntfFlags;
            System::StaticArray<System::Byte, 16> IntfGuid;
            TSymbolNameBase IntfUnit;
        };
        struct
        {
            TProcedureSignature *ProcSig;
            TAttrData ProcAttrData;
        };
        struct
        {
            TMethodKind MethodKind;
            System::Byte ParamCount;
            System::StaticArray<char, 1024> ParamList;
        };
        struct
        {
            System::TClass ClassType;
            PTypeInfo *ParentInfo;
            short PropCount;
            TSymbolNameBase UnitName;
        };
        struct
        {
            System::Byte MaxLength;
        };
        struct
        {
            TFloatType FloatType;
        };
        struct
        {
            System::Byte SetTypeOrSize;
            PTypeInfo *CompType;
        };
        struct
        {
            TOrdType OrdType;union
            {
                struct
                {
                    int MinValue;
                    int MaxValue;union
                    {
                        struct
                        {
                            PTypeInfo *BaseType;
                            TSymbolNameBase NameList;
                        };
                    };
                };
            };
        };
        struct
        {
            System::Word CodePage;
        };
        struct
        {
            TAttrData AttrData;
        };
    };
};

Propriétés

Type Visibilité  Source Unité  Parent
record
struct
public
System.TypInfo.pas
System.TypInfo.hpp
System.TypInfo System.TypInfo

Description

TTypeData est utilisée en interne pour représenter les informations de type.

Une structure TTypeData représente une catégorie de propriétés, d'événements ou de méthodes dans les paramètres transmis à plusieurs routines de l'unité TypInfo.

Voir aussi