cs_Kruger
Messages postés68Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 4 octobre 2004
-
13 févr. 2004 à 03:42
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
1 mars 2006 à 01:35
bonjour,
je suis en train de developper une petite appli qui permet la gestion de caisse et de stock d'un magasin et je me retrouve avec une exception quend j'additionne le contenu de cellules d'une stringgrid, cette exception est:
Le projet xxx.exe a provoquer une classe d'exception EConvertError avec le message '' n'est pas une valeur en virgule flottante correcte. processus stoppé.
en fait por additionner le contenu des cellules, j'ai fais une boucle qui me recupere toutes les valeurs et le soucis est qu'il y a des cellules vides et ce sont ces cellules qui me crée une exceptions puisqu'il ne reconnais pas le contenu d'une cellule vide en tant que réel, comment résoudre mon probleme, si qqn peut m'aider??
le contenu des cellules est du type 10.23
Merci de votre aide.
MM TOUR
Messages postés6Date d'inscriptionlundi 2 février 2004StatutMembreDernière intervention25 février 2004 14 févr. 2004 à 11:02
Bonjour,
Pourquoi ne pas lire le contenu des cellules de la stringgrid dans un TRY ... EXEPT et traiter la dite exeption à ta convenance ? (par exemple sauter l'obstacle...)
En lisant ta question je m'en pose une aussi : pourquoi ne préfères - tu pas utiliser les 'CURRENCY' dans ton appli ?
amicalement, MM TOUR.
cs_Kruger
Messages postés68Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 4 octobre 2004 14 févr. 2004 à 14:20
excuse moi, j'aurai du le preciser au départ, en fait c'est que je suis débutant en delphi donc je suis pas forcement une lumière, :) .
Pour ce qui est des try exept et currency, comment les utiliser, pour le moment j'utilise une boucle pour faire le calcul:
Somme :=0;
for i:=1 to 19 do
Somme:= Somme+StrToFloat(StringGrid1.Cells[5,i]);
Remise:= StrToFloat(Edit5.Text);
Edit6.text:= FloatToStr(Somme-Remise);
Si toutes les cellules sont remplie, tous va bien, sinon, je me retrouve avec l'exception que j'ai cité au dessus
Autre solution : teste la valeur de ta cellule avant de l'addition..
IF stringgrid.cell[i,j] <> '' then
begin
ici, le code qui est entre try ... except.. et rien à gerer
end;
Note : CURRTOSTRF te permet de formater les valeurs monétaires en ajoutant les zeros absents. (10 devient : 10,00 )
voila qq. pistes..j'allais oublier : en mode execution Delphi ne semble pas voir les TRY.. donc essaie ton programe en
dehors.
Bonne chance!
MM TOUR
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Kruger
Messages postés68Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention 4 octobre 2004 14 févr. 2004 à 16:10
Merci beaucoup de ton aide, entre temps, j'avais essayer ça:
{Calcul du montant à payer}
Somme :=0;
for i:=1 to 19 do
begin
try
Somme:= Somme+StrToFloat(StringGrid1.Cells[5,i]);
except
on EconvertError do
Somme:= Somme+0;
end;
Remise:= StrToFloat(Edit5.Text);
Edit6.text:= FloatToStr(Somme-Remise);
end;
end;
sans sésultat non plus mais c'est parcequ'en mode execution, les exceptions ne sont pas gérée comme tu dis, j'avais pas pensé a essayer mon prog en dehors, merci beaucoup de ton aide MM_TOUR, j'en apprend tous les jours :) .
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 mars 2006 à 01:33
Salut,
il y avais aussi tout simplement function
StrToCurrDef(const S: string; const Default: Currency): Currency;
Si S une valeur en virgule flottante correcte il renvoie Default
Donc StrToCurrDef (' ', 0) revoie 0
Tout simplement
@+
Cirec
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 1 mars 2006 à 01:35
Correction
il y avais aussi tout simplement la function
StrToCurrDef(const S: string; const Default: Currency): Currency;
Si Sn'est pas une valeur en virgule flottante correcte il renvoie Default
Donc StrToCurrDef (' ', 0) revoie 0
Tout simplement
@+
Cirec