• [转]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

  • 相关阅读:
    googlestyleguide
    利用安装光盘创建本地 yum 源补装 RPM 软件包
    串,并联电路的电阻,电流,电压,电功,电功率,电热的分配规律
    链接时如何选择C RunTime(CRT) library
    delphi函数参考手册
    QQ2006 界面编程
    DELPHI6 函数大全
    家庭照明电路设计
    IP地址转换成IP Number并得到国家
    两个或多个开关控制一盏灯的电器接线图
  • 原文地址:https://www.cnblogs.com/minghang/p/5622163.html
Copyright © 2020-2023  润新知