Delphi 2007 变量类型初始化

标签 delphi delphi-2007

我正在尝试声明一个常量数组来验证输入对象持有的类型属性。但我做错了,请看下面的代码:

// Record to hold Name-Value pair for checking entities  
TValues = record  
  Name : WideString;  
  Value : Variant;  
end;  

const  
 coarrType1Properties : array[0..5] of TValues =  
 (  
  (Name : 'HARDWARE'; Value : TRUE),  
  (Name : 'SOFTWARE'; Value : TRUE),  
  (Name : 'TAG'; Value : TRUE),  
  (Name : 'AUTHORIZED'; Value : TRUE),  
  (Name : 'ID'; Value : 700),  
  (Name : 'CODE'; Value : 0)  
 );  

但是我收到类型值的 Delphi 编译时错误,即无法初始化此类型。如何防止这个错误?或者我们可以有替代解决方案等。请协助...

最佳答案

对于这些(Boolean、Integer)和其他简单类型,您可以使用 TVarData 进行初始化并将类型转换回 Variant:

type
  TValues = record
    Name: WideString;
    Value: TVarData;
  end;

const
  coarrType1Properties : array[0..5] of TValues = (
    (Name: 'HARDWARE'; Value: (VType: varBoolean; VBoolean: True)),
    (Name: 'SOFTWARE'; Value: (VType: varBoolean; VBoolean: True)),
    (Name: 'TAG'; Value: (VType: varBoolean; VBoolean: True)),
    (Name: 'AUTHORIZED'; Value: (VType: varBoolean; VBoolean: True)),
    (Name: 'ID'; Value: (VType: varInteger; VInteger: 700)),
    (Name: 'CODE'; Value: (VType: varInteger; VInteger: 0))
  );

procedure Test;
var
  I: Integer;
begin
  for I := Low(coarrType1Properties) to High(coarrType1Properties) do
    Writeln(Format('coarrType1Properties[%d]: ''%s'', %s', [I, coarrType1Properties[I].Name, VarToStr(Variant(coarrType1Properties[I].Value))]));
end;

关于Delphi 2007 变量类型初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6341806/

相关文章:

从父级调用应用程序创建的 Delphi DLL

c++ - 动态数组,从 C++ 到 Delphi 的转换

Delphi Indy 404后无响应内容

delphi - 无状态 HTTP session 中的进度反馈

delphi-2007 - 如何在Delphi中将 float 转换为字符串,指定有效数字,而不是十进制数字(并且不是G格式)

delphi - 在 Windows 7 中控制主扬声器音量

delphi - 如何实现假网络摄像头?

delphi - 获取 MaxLen 参数以与 MinimizeName 一起使用

dbxmys30.dll 中的 Delphi 2007 DBX 访问冲突

delphi - TNTUnicode组件问题