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

问题描述 投票:1回答:1

为了避免函数中可能出现的错误,我需要预先检查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.

提前致谢。

delphi
1个回答
6
投票

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

请注意,这种类型并不特殊。同样的论点适用于其他类型,例如IntegerBooleanDouble等。

© www.soinside.com 2019 - 2024. All rights reserved.