为了避免函数中可能出现的错误,我需要预先检查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.
提前致谢。
没有可能的方法来检测这一点。这是一种非托管值类型,当声明为局部变量时,它不会被初始化。它将具有一个值,但该值未定义且与任何其他值无法区分。
请注意,这种类型并不特殊。同样的论点适用于其他类型,例如Integer
,Boolean
,Double
等。