zoukankan      html  css  js  c++  java
  • [转]delphi中array of const 借鉴

    Delphi中关于 array of const 变体开放数组参数 .      
        变体开发数组参数允许向单个过程或函数传递不同类型表达式的数组。要定义含有变体开放数组参数的例程,需要指定array     of     const作为参数类型。如,  
        procedure     DoSomething(A:     array     of     const);  
        这里声明了一个叫做DoSomething的过程,该过程可以操作不同种类的数组。    
        array     of     const结构等价于array     of     TVarRec。TVarRec,在单元System中声明,用于表示一个记录,记录中有一个可以保存多种值(整数、布尔、字符、实数、串、指针、类、类 引用、接口、变体等)的变体部分。TVarRec中的VType字段表示数组中每个元素的类型。一些类型作为指针传递而不传递值;特别是长串,作为指针传 递并且必需转换为string类型。    
        下面的例子在函数中使用了变体开放数组参数,该函数对接受的每个元素创建一个串表示法,最后连接成一个串。该函数中调用的串处理例程都定义在SysUtils单元中。     

    function MakeStr(const Args: array of const): string;
    const
    BoolChars: array[boolean] of char = ('F', 'T');
    var
    i: integer;
    begin
    result := '';
    for i := 0 to High(Args) do
        with Args[i] do
          case VType of
          vtInteger: result := result + IntToStr(VInteger);
          vtBoolean: result := result + BoolChars[VBoolean];
          vtChar: result := result + VChar;
          vtExtended: result := result + FloatToStr(VExtended^);
          vtString: result := result + VString^;
          vtPChar: result := result + VPChar;
          vtObject: result := result + VObject.ClassName;
          vtClass: result := result + VClass.ClassName;
          vtAnsiString: result := result + String(VAnsiString);
          vtCurrency: result := result + string(VVariant^);
          vtInt64: result := result + IntToStr(VInt64^);
        end;
    end;

    caption := MakeStr(['test', 100, '', true, 3.14159, TForm]);

    caption 显示如下:

    test100T3.14159TForm

  • 相关阅读:
    SQL 强化练习 (七)
    SQL 强化练习 (六)
    SQL 强化练习 (五)
    SQL 强化练习 (四)
    典型相关分析 CCA
    SQL 强化练习(三)
    双向 和 多重 RNN
    SQL 强化练习 (二)
    SQL 强化练习 (一)
    SQL 查询强化
  • 原文地址:https://www.cnblogs.com/minghang/p/5622163.html
Copyright © 2011-2022 走看看