Dans une routine de tri dans Delphi 2007 J'utilise le code comme ceci:Delphi, comment éviter un message d'avertissement unicode D2009, 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;
où txt est une chaîne. Cela fonctionne bien dans D2007 mais donnera des avertissements dans D2009 et D2010 Je ne sais pas pourquoi mais est-il possible de le faire fonctionner sans avertissements dans D2009 et D2010?
Roy M Klever
Merci pour une bonne explication, je l'obtiens maintenant et a pu éviter les avertissements en utilisant (txt [n]> = '0') et (txt [n] <= '9') Roy M Klever –
Je désactive toujours l'avertissement car le compilateur génère un code parfaitement valide pour "WideChar dans AnsiCharSet". Et parce que je sais que tous mes caractères sont des caractères ASCII <# 128, je ne vois pas la nécessité de ralentir une boucle serrée avec la fonction "inline" CharInSet(). Cela peut avoir à voir avec le fait que j'aime le code rapide et facile à utiliser. –