Pascal 变体(variant)

  • 变体(variant)

    Pascal支持一种称为变体的独特存储类型。您可以在变量中分配任何简单类型的值。存储在变量中的值的类型仅在运行时确定。几乎所有简单类型都可以分配给变体:序数类型,字符串类型,int64类型。集和,记录,数组,文件,对象和类之类的结构化类型与变体不兼容。您还可以为变体分配一个指针。Free Pascal支持变体。
  • 声明变体

    您可以使用var关键字像其他类型一样声明变体类型。声明变体类型的语法是-
    
    var
       v: variant;
    
    现在,该变量v可以分配给几乎所有简单类型,包括枚举类型,反之亦然。
    
    type  
       color = (red, black, white);  
    var  
       v : variant;  
       i : integer;  
       b : byte;  
       w : word;  
       q : int64;  
       e : extended;  
       d : double;  
       en : color;  
       as : ansistring;  
       ws : widestring;  
    
    begin  
       v := i;  
       v := b;  
       v := w;  
       v := q;  
       v := e;  
       v := en;  
       v := d:  
       v := as;  
       v := ws;  
    end;
    
  • 示例

    以下示例将说明概念-
    
    Program exVariant;
    
    uses variants;
    type
       color = (red, black, white);
    
    var
       v : variant;
       i : integer;
       r: real;
       c : color;
       as : ansistring;
    
    
    begin
       i := 100;
       v:= i;
       writeln('Variant as Integer: ', v);
    
       r:= 234.345;
       v:= r;
       writeln('Variant as real: ', v);
    
       c := red;
       v := c;
       writeln('Variant as Enumerated data: ', v);
    
       as:= ' I am an AnsiString';
       v:= as;
       writeln('Variant as AnsiString: ', v);
    end.
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Variant as Integer: 100
    Variant as real: 234.345
    Variant as Enumerated data: 0
    Variant as AnsiString: I am an AnsiString