0
下面的代码示例应评估一个字符串。避免if语句的完整检查
function EvaluateString(const S: Ansistring): Ansistring;
var
i, L: Integer;
begin
L := Length(S);
i:=1;
if (L > 0) and (S[i] > ' ') and (S[L] > ' ') then
.....
end;
但如果L = 0,那么(S[i] > ' ')
将创建访问冲突。 我可以在保持if
条件的情况下避免此问题吗?
您是否启用了完整的布尔评估? –
大卫的意思是,如果完全布尔评估是* not * enabled(这是默认值),那么您将不会得到访问冲突,因为如果'L = 0',测试'(L> 0)''将已经失败,并使代码跳过评估的其余部分。 –