/!\ Disclaimer : Le code du forum n'est en rien impliqué dans cette erreur :p /!\
-----
ouais je vais essayé
taureau
c'est pas si compliqué, il suffit que tu donnes 13 comme valeur par défaut, comme cela si tes utilisateurs entre du texte, strtointdef va te retourner 13 et tu verras bien alors qu'il y a erreur...
AGA
d'ou intercepter l'expection, mais ça marche po bien
AGA
je veux pas une val par defaut, je veux que si c pas bon (l'utilisateur a mis du txt par exemple) je dise c pas bon, RECOMMENCE
taureau
utilise StrToIntDef à la place de StrToInt, la syntaxe est :
function StrToIntDef(const S: string; Default: Integer): Integer;
le paramètre default est retourné si une erreur se produit lors de l'évaluation, comme cela plus d'exception à gérer c'est plus simple et plus propre.
StrToIntDef est dans l'unit SysUtils
pense aussi à remplacer Data.TParametres.FieldByName('ParRappel').asInteger:=StrToInt(delai); par Data.TParametres.FieldByName('ParRappel').asInteger:=chainerecu
a mon avis c'était là que se produisait l'exception car tu avais oublié de protéger la zone
AGA
J'arrive pas à intercepter l'exception, j'ai qd même droit un msg barbare try
chaineRecu := StrToInt(delai);
except
on EConvertError do
ShowMessage('C tout planté')
else
begin
WHILE (chaineRecu>12) OR (chaineRecu<0) DO // Tant que le délai est plus grand que 12
begin
ShowMessage('Délai de rappel trop grand! Valeurs autorisées [0..12]'); //Message d'erreur
reponseRappel:=InputQuery('Délai de rappel', 'Entrer le délai de rappel des factures (en mois)', delai);
end;
IF reponseRappel=TRUE THEN //Si l'utilisateur clique sur OK
begin
Data.TParametres.FieldByName('ParRappel').asInteger:=StrToInt(delai);
Data.TParametres.Post; //Insertion de l'information
end
ELSE
data.TParametres.Cancel; //On annule les modifications non encore insérées
end;
end;