zoukankan      html  css  js  c++  java
  • 类型与泛型标记

    uses System.TypInfo;

      // Sync with compiler internals
      TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
        tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
        tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray, tkUString,
        tkClassRef, tkPointer, tkProcedure {, tkMRecord});

    type
    {$IFDEF NEXTGEN}
      TSymbolName = Byte;
    {$ELSE  NEXTGEN}
      TSymbolNameBase = string[255];
      TSymbolName = type TSymbolNameBase;
    {$ENDIF NEXTGEN}

      TTypeInfoFieldAccessor = record
      strict private                   //静态?私有
        FData: PByte;
      public
        procedure SetData(const Data: PByte); inline;
        class operator Equal(const Left, Right: TTypeInfoFieldAccessor): Boolean; inline;
        function UTF8Length: integer; inline;
        function ToString: string;
    {$IFNDEF NEXTGEN}
        function ToShortUTF8String: ShortString; inline;
    {$ENDIF !NEXTGEN}
        function ToByteArray: TBytes;
        function Tail: PByte; inline;
      end;

    -------------------TypeInfo (T)-------------------

      PTypeInfo = ^TTypeInfo;
      TTypeInfo = record
        Kind: TTypeKind;
        Name: TSymbolName;
        function NameFld: TTypeInfoFieldAccessor; inline;
       {TypeData: TTypeData}
        function TypeData: PTypeData; inline;
      end;

    function TSampleClass<T>.GetDataName: string;
    var
     Kind: TTypeKind;
    begin
      Result := GetTypeName (TypeInfo (T));
      Kind := PTypeInfo(TypeInfo(T))^.Kind;
      case Kind of
        tkInteger: ShowMessage('I');
        tkFloat: ShowMessage('F');
        tkString,tkUString: ShowMessage('S');
        tkChar:   ShowMessage('C');
        tkClass:  ShowMessage('Class');
        else ShowMessage(Result);
      end;
    end;

  • 相关阅读:
    JavaScript笔记
    第二个项目总结
    java设计模式-代理模式
    软件设计师-随笔笔记
    java设计模式-单例模式
    java-内部类介绍
    java-初识JVM运行及类加载过程
    java-java动态性之反射,动态编译,动态执行js及动态字节码操作
    java-初识注解Annotation
    java-网络编程入门
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/4373900.html
Copyright © 2011-2022 走看看