在计算二进制算术累加和校验码时,下面一段函数
function CalcChecksum(Cmd:string): Integer; {计算16进制和校验方式}
var
i: Integer;
begin
result := 0;
for i := 1 to Length(Cmd) do
begin
result := result + Integer(Cmd[i]); {此处的Integer能用StrToInt替换吗?}
end;
end;
其中的Integer是否能用StrToInt替换吗?对于初步接触Delphi的我来说有些模糊。经过测试,发现答案是不能。
StrToInt()要求参数是一个字符串形式的数字,例如StrToInt('25')等,而像StrToInt(#13)里面的参数是一个ASCII码字符,但对应的字符不一定是数字,所以不一定就能转换成为Integer类型的值。例如#13代表的是回车,只有像#48...#57才能使用StrToInt,因为#48...#57正好是数值0...9
Integer是直接将ASCII值转换为对应的数值,在这里正好合适。