在2007年德尔福排序例行我使用这样的代码:德尔福,如何避免D2009 unicode的警告信息,D2010
(txt[n] in ['0'..'9'])
function ExtractNr(n: Integer; var txt: String): Int64;
begin
while (n <= Length(txt)) and (txt[n] in ['0'..'9']) do n:= n + 1;
Result:= StrToInt64Def(Copy(txt, 1, (n - 1)), 0);
Delete(txt, 1, (n - 1));
end;
其中TXT是一个字符串。这在D2007中可以正常工作,但会在D2009和D2010中发出警告我不知道为什么,但有没有什么方法可以使它在D2009和D2010中不发出警告?
罗伊中号Klever
谢谢你的很好的解释,我现在明白了,并且能够通过使用(txt [n]> ='0')和(txt [n]> ='9')来避免警告 Roy M Klever – 2010-02-13 02:30:49
我总是禁用警告,因为编译器为“WideChar in AnsiCharSet”生成完全有效的代码。因为我知道我的所有字符都是ASCII字符<#128,所以我没有必要用“内联”的CharInSet()函数来减缓紧密的循环。这可能与我喜欢快速和资源友好的代码有关。 – 2010-02-13 13:13:46