[转]delphi中array of const 借鉴

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]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

以上是关于[转]delphi中array of const 借鉴的主要内容,如果未能解决你的问题,请参考以下文章

delphi const的用法

[转]delphi的procedure of object

delphi的简单代码

Delphi中取得汉字的首字母(十分巧妙)

DelPhi中怎样定义数组及字母组

gcc: multiple definition of [转]