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