下面我将提供两个将某些数据的动态数组转换为变量的示例。在第一个示例中,数组包含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.
是否可以将枚举数组转换为变体?我知道我可以使用整数数组并将它们转换回枚举但我不想这样做。