如何确定TSysCharSet(AnsiChar集)是否未分配?

Aeo*_*yan 1 delphi

为了避免函数中可能出现的错误,我需要预先检查TSysCharSet类型(或AnsiChar集合)的变量是否未分配.我该怎么做?

procedure TestSysCharSet(const AnsiCharSet: TSysCharSet);
begin
  if PByte(@AnsiCharSet) = nil then WriteLn('The AnsiCharSet is unassigned.')
  else if AnsiCharSet = [] then WriteLn('The AnsiCharSet is empty.');
end;

procedure Test();
var
  AnsiCharSet: TSysCharSet;

begin
  // The AnsiCharSet is intentionally made unassigned
  TestSysCharSet(AnsiCharSet);
  ReadLn;
end;

begin
  Test();
end.
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dav*_*nan 6

没有可能的方法来检测这一点.这是一种非托管值类型,当声明为局部变量时,它不会被初始化.它将具有一个值,但该值未定义且与任何其他值无法区分.

请注意,这种类型并不特殊.同样的道理也适用于其他这样的类型,例如Integer,Boolean,Double等.