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

时间:2018-08-29 17:29:32

标签: 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.

谢谢。

1 个答案:

答案 0 :(得分:6)

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

请注意,这对这种类型并不特殊。相同的参数适用于其他此类类型,例如IntegerBooleanDouble等。