为了避免函数中可能出现的错误,我需要预先检查是否未分配 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.
谢谢。
答案 0 :(得分:6)
没有可能的方法来检测到这一点。这是一种非托管值类型,当声明为局部变量时,不会初始化。它将有一个值,但是该值是未定义的,无法与任何其他值区分开。
请注意,这对这种类型并不特殊。相同的参数适用于其他此类类型,例如Integer
,Boolean
,Double
等。