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     +     CurrToStr(VCurrency^);   
    
                    vtVariant:           Result     :=     Result     +     string(VVariant^);   
    
                    vtInt64:               Result     :=     Result     +     IntToStr(VInt64^);   
    
            end;   
    
    end;   
    
    可以用一个开放数组构造器(见开放数组构造器)来调用该函数。例如:   
    
    MakeStr(['test',     100,     '     ',     True,     3.14159,     TForm])   
    
    上面的调用将返回串    "test100     T3.14159TForm”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值