BARRE UTILITAIRE

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 9 déc. 2007 à 13:01
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 - 9 déc. 2007 à 16:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44984-barre-utilitaire

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 déc. 2007 à 16:03
ced55957, voici quelques conseils :

Il faut donner des noms plus explicites à tes variables :
"n10,n11,n12,n13,n1,n2,n4,n5,n6,n7", ça évoque pas grand chose,
"Long1, Larg1, Aire1,Long2, Larg2, Aire2", Prix, par exemple, ça cause plus.
Nommer les composants permet de mieux s'y retrouver dans le code.
"EditPrix" ou "edPrix" est plus évocateur que "Edit7.Text".
Une fonction séparée pour le calcul du prix aurait été plus intéressante à mon avis.
Le code est un peu lourd et redondant.
Voici un petit allègement (et encore...) avec quelques commentaires :

procedure TForm1.Button3Click(Sender: TObject);
var
Long1, Larg1, Aire1,
Long2, Larg2, Aire2,
PrixGros, PrixDetail : Extended;
begin
Long1 := StrToFloat(Edit1.Text);
Larg1 := StrToFloat(Edit2.Text);
Aire1 := Long1 * Larg1; // surface de la plaque de depart
Edit5.Text := FloatToStr(Aire1);

Long2 := StrToInt(Edit3.Text);
Larg2 := StrToInt(Edit4.Text);
Aire2 := Long2 * Larg2; // surface de la plaque à obtenir
Edit6.Text := Floattostr(Aire2);

// les 2 lignes suivantes sont inutiles :
//N11:=Strtofloat(Edit6.Text);
//N13:=Strtofloat(Edit5.Text);
PrixGros := StrToFloat(Edit7.Text);
PrixDetail := (Aire2 * PrixGros) / Aire1; //calcul le tarif de la plaque a obtenir
Edit8.Text := Floattostr(PrixDetail);

// ne pas mettre plusieur instructions sur la même ligne :
if PrixGros = 0 then
ShowMessage('Le tarif de la plaque de départ n est pas valide');

if Long2 > Long1 then
Edit3.Color := clred
else edit3.Color := clwhite;
if Larg2 > Larg1 then
Edit4.Color := clred
else Edit4.Color := clwhite;

// pourquoi pas, mais il va toujours rester comme ça :
edit8.Color := cllime;

// simplification du code ici :
if (Long2 > Long1) or (Larg2 > Larg1) then
begin
Edit8.Text := 'invalide';
ShowMessage('ATTENTION!! La valeur à obtenir est plus grande que la valeur de depart');
end;

// pas vraiment utile : //if (Long1 Long2) and (Larg1 Larg2)
// then edit8.text := (edit7.text);
end;

Voilà.

A +
ced55957 Messages postés 108 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 19 juin 2012
9 déc. 2007 à 13:49
ah oui dsl je viens de voir l'erreur je regle ça et je met à jour! merci
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 déc. 2007 à 13:27
Après vérif, on obtient 2,5 € et non 5 € comme tu l'affirmes plus haut.
Ouf... j'étais un peu inquiet, là.

Sinon, retire les ".~machin" et ".dpu" qui encombrent le zip et ne servent à rien.
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
9 déc. 2007 à 13:01
"une plaque de 200X300 mm vaut 10€ et vous voulé savoir le tarif d'un bout de cette plaque 100X150 cliquer sur calculer et le resultat et de 5€"

C'est mal barré...
Rejoignez-nous