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;

  • 相关阅读:
    一只iPhone的全球之旅
    iOS开发之在地图上绘制出你运行的轨迹
    iOS开发之一些字符串常用的代码
    json格式化和查看工具
    iOS开发之结合asp.net webservice实现文件上传下载
    更改GROOVE的文件夹位置
    调试Windows Service
    从数据库中获取Insert语句
    iOS开发学习笔记(一)
    《影响力》的影响
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/4373900.html
Copyright © 2011-2022 走看看