• 类型与泛型标记


    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;

  • 相关阅读:
    在qt中用tcp传输xml消息
    Response.Redirect 打开新窗体的两种方法
    div:给div加滚动栏 div的滚动栏设置
    高速排序算法
    海量数据处理面试题集锦
    VB中DateDiff 函数解释
    FusionCharts简单教程(一)---建立第一个FusionCharts图形
    mysql 加入列,改动列,删除列。
    Lucene教程具体解释
    Windows7下的免费虚拟机(微软官方虚拟机)
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/4373900.html
Copyright © 2020-2023  润新知