如何将枚举数组转换为Variant?

时间:2015-02-10 11:18:29

标签: delphi enums delphi-2009 variant

下面我将提供两个将某些数据的动态数组转换为变量的示例。在第一个示例中,数组包含Integers,在第二个示例中,数组包含TMyEnums

我认为这两个示例非常类似,但是,第二个示例在运行时返回错误“Invalid variant type conversion”

program Project128;

{$APPTYPE CONSOLE}

uses
  SysUtils, Variants;

type
  TIntegerArray = array of Integer;

type
  TMyEnum = (meOne, meTwo, meFour, meTen);
  TMyEnumArray = array of TMyEnum;

var
  LVar1, LVar2: Variant;
  LIntArray : TIntegerArray;
  LMyEnumArray: TMyEnumArray;
begin
  SetLength(LIntArray, 2);
  DynArrayToVariant(LVar1, LIntArray, TypeInfo(TIntegerArray)); //Works

  SetLength(LMyEnumArray, 2);
  DynArrayToVariant(LVar2, LMyEnumArray, TypeInfo(TMyEnumArray)); //Invalid variant type conversion
end.

是否可以将枚举数组转换为变体?我知道我可以使用整数数组并将它们转换回枚举但我不想这样做。

0 个答案:

没有答案