Perte de pédale pour le decimal avec "Tedit"

Résolu
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 1 févr. 2008 à 15:07
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 1 févr. 2008 à 23:16
Bonjour!

Ma question est pratique.
Ce premier module de codes me permet aisement d'avoir dans mon "edit3" un resultat ayant un nombre decimal par exemple de .00

Procedure...
var leader : double;
begin
leader := combobox1.ItemIndex * combobox2.itemIndex;
edit3.text:= FloatToStrF(ffFixed,15,2);
end;

Bref, l'opération de multiplication entre les deux "combobox" marche bien et donne leur résultat dans l'"edit3".
Quel est mon problème?
Je n'arrive pas à faire cette même opération quand il s'agit des Tedits. Que faut-il mettre là ou se colorer en rouge s'il vous plait.

Procedure...
   var leader : double;
begin
   leader := edit1.???  *  edit2.???;
   edit3.text:= FloatToStrF(ffFixed,15,2);
end;

Merci,

Developper est une dimension pour moi.
Leader2000

7 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
1 févr. 2008 à 15:15
Salut,
Peut être :
Leader := StrToFloat(Edit1.Text) * StrToFloat(Edit2.Text);

 
@+
Cirec

<hr siz="" />
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 févr. 2008 à 15:20
ItemIndex renvois l'index de l'item selectionné dans un objet liste (listbox, combobox)

TEdit ne fonctionnant pas avec des items, il est normal qu'il n'y ai pas de propriété ItemIndex.

j'en deduis (vive la divination dans l'interpretation des symboles nuageux) que tes combobox contienent des chiffres de 0 a n
et que la multiplication des index permet d'eviter une convertion texte > numerique.

donc si dans tes TEdit tu mets egalement des chiffres tu peu faire :

leader := StrToFloatDef(Edit1.text, 0) * StrToFloatDef(Edit2.text, 0);
edit3.text := format('%.2f',[leader]);

<hr size="2" width="100%" />
http://deefaze.gnomz.com
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
1 févr. 2008 à 15:22
ps :
l'opération que tu effectues avec les ComboBox "combobox1.ItemIndex * combobox2.itemIndex" ne porte pas sur les valeurs contenues dans les ComboBox mais sur les Index des Items

autrement dit si : ComboBox1 contient : 5; 8 ;10 (Index 0 5; Index 1 8; Index 2 = 10)
et
ComboBox2 contient : 2; 4; 6;

et en admettant que combobox1.ItemIndex = 1
et en admettant que combobox2.ItemIndex = 2


combobox1.ItemIndex * combobox2.itemIndex
est égale à : 1 * 2 et non 8 * 6 ce qui devrait être le résultat attendu !

 
@+
Cirec

<hr siz="" />
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
1 févr. 2008 à 15:24
Arf ... j'ai pas rafraîchi avant poster mon message ...
F0xi à été plus rapide que moi

 
@+
Cirec

<hr siz="" />
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 févr. 2008 à 15:44
on s'auto-grill depuis tout a l'heure mon jeune ami :)

il faut rajouter egalement que ItemIndex est une valeur entiere,

donc entier * entier = entier
jamais un flottant.

pour multiplier les valeur contenus dans les combobox :

A := StrToFloatDef( ComboBox1.Items[ComboBox1.ItemIndex], 0);
B := StrToFloatDef( ComboBox2.Items[ComboBox2.ItemIndex], 0);
Edit3.Text := Format('%.2f',[A * B]); 

une difference entre Format et xxxToStr :

Moi je n'utilise que format, bien mal on en dise, car elle permet de changer le type de resultat plus facilement que de passer de IntToStr a FloatToStr en permanance, de plus elle permet beaucoup de choses que ces derniers ne permettent pas.

exemple :

Edit3.Text := format('A=%d // B=%d // A*B=%d // A/B=%f // A div B= %d // A mod B= %d',[A, B, A*B, A/B, A div B, A mod B]);

ce qui est bien pendant la conception pour afficher les valeurs alentours au calcul pour verifier qu'il n'y a pas d'erreur dans notre code ou un algorithme.
au final, quand tout vas bien, on peu remplacer Format par une fonction correspondante.

<hr size="2" width="100%" />
http://deefaze.gnomz.com
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
1 févr. 2008 à 15:53
Dis donc,


Tout le monde a été gentil avec ces réponses. Vous m'aviez apporté assistance les gars.

Grand merci,

Developper est une dimension pour moi.
Leader2000
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 févr. 2008 à 23:16
quand uen question est correctement posée et que l'on sens qu'il y a eu recherche mais blocage, alors on aide, ça fonctionne comme cela ici.

bon courage a toi pour la suite et n'oublis pas de consulter l'aide Delphi (même pour lire) c'est toujours utile.

<hr size="2" width="100%" />
http://deefaze.gnomz.com
0
Rejoignez-nous