Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : arrondir un nombre selon nombre dans une listbox... [ Divers / Aide et documentation ] (elt93)

samedi 17 mai 2008 à 18:25:30 | arrondir un nombre selon nombre dans une listbox...

elt93

Bonjour,
Je travaille sur un logiciel de calcul ou jaimerais ajouter une fonction arrondir, en dessous se situe une TListBox avec les nombres de 1 à 5 sur chaque ligne que l'utilisateur selectionne pour dire combien de nombre veut-il apres la virgule, j'ai tenté ceci, mais ca n'a pas marché :

var
a: extended;
b: extended;
e: string;
begin
if arrondir.checked then try
if nombre.Items.Strings[nombre.ItemIndex]<> '1' then
e:= '0.0' else if nombre.Items.Strings[nombre.ItemIndex] <> '2' then
e:= '0.00' else if nombre.Items.Strings[nombre.ItemIndex] <> '3' then
e:= '0.000' else if nombre.Items.Strings[nombre.ItemIndex] <> '4' then
e:= '0.0000' else  if nombre.Items.Strings[nombre.ItemIndex] <> '5' then
e:= '0.00000' ;
finally
end;

if cube.Checked then try
if vol.checked then try
a:= strtofloat(la.Text);
b:= a*a*a;
finally
if arrondir.checked then FormatFloat(e , b);
Memo1.Lines.add('Volume du cube = '+floattostr(b)+ ' cm3');
if CheckBox1.Checked then Memo1.Lines.add('Formule (volume du cube) : longueur arête x longueur arête x longueur arête ');
end;
...
end;


Cordialement,
Merci d'avance pour votre aide !

samedi 17 mai 2008 à 19:17:18 | Re : arrondir un nombre selon nombre dans une listbox...

JulioDelphi

Membre Club Administrateur CodeS-SourceS
0) Salut,
1) Je pose un edit (edit1), je mets '5.987654321' dans son text.
2) Je pose un edit (edit2), je vide son text.
3) Je pose une listbox (listbox1), je mets 5 lignes, les chiffres de 1 à 5.
4) Je pose un bouton (button1), je mets cette procedure dessus :
"edit2.Text := floattostrf( strtofloat(edit1.text) , ffFixed , 7 , strtoint( listbox1.Items[listbox1.ItemIndex] ) );"
5) L'arrondi fonctionne.
6) De rien.

samedi 17 mai 2008 à 19:26:13 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS

ComboBox1 (cbxFloatPrec) >  0, 1, 2, 3, 4 ... 9, Ne pas arrondir

var FltPrec : integer;

uses Math;

....

procedure TFormX.cbxFloatPrecChange(Sender:TObject);
begin
  case cbxFloatPrec.ItemIndex of
   10 : FltPrec := -1;
   else
        FltPrec := cbxFloatPrec.ItemIndex;
  end;
end;

var S: string;
    F: extended;
begin
  F := a*a*a;

  case FltPrec of
    -1 : S := format('%f',[F]);
     0 : S := format('%d',[Round(F)]);
    else
         S :=
format('%.*f',[FltPrec,RoundTo(F, -FltPrec)]);
  end;
 
  Memo1.Lines.Add('Volume du cube : '+S+' cm3');
end;




samedi 17 mai 2008 à 19:46:45 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Merci beaucoup,
Mais pourquoi lorsque j'execute, et que je clique , le bouton, j'ai une exception disant: " n'est pas une valeur en virgule flottante correcte.

samedi 17 mai 2008 à 20:06:45 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Merci F0xi, je naivais pas vu ton poste avant de mettre mon dernier post. J'ai adapté ton code à mon logiciel, j'ai aucune exception mais ca ne marche pas, le nombre ne s'arrondit pas, voici ce que j'ai fait :
uses Math
var FltPrec : integer;
(nombre = Combobox)

procedure TForm1.nombreChange(Sender: TObject);
begin
  case nombre.ItemIndex of
   10 : FltPrec := -1;
   else
        FltPrec := nombre.ItemIndex;
  end;
end;

procedure TForm1.Button27Click(Sender: TObject);
var
a: extended;
b: extended;
e: string;
begin
if cube.Checked then try
if vol.checked then try
a:= strtofloat(la.Text);
b:= a*a*a;
finally
if arrondir.Checked then case FltPrec of
    -1 : e := format('%f',[b]);
     0 : e := format('%d',[Round(b)]);
    else
         e := format('%.*f',[FltPrec,RoundTo(b, -FltPrec)]);
  end;

Memo1.Lines.add('Volume du cube = '+floattostr(b)+ ' cm3');
if CheckBox1.Checked then Memo1.Lines.add('Formule (volume du cube) : longueur arête x longueur arête x longueur arête ');
end;


Merci beaucoup pour votre aide

dimanche 18 mai 2008 à 07:46:19 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS

if arrondir.Checked then // ne sert plus a rien car option "ne pas arrondir" dans la combobox en item 10

  case FltPrec of
    -1 : e := format('%f',[b]);
     0 : e := format('%d',[Round(b)]);
    else
         e := format('%.*f',[FltPrec,RoundTo(b, -FltPrec)]);
  end;
Memo1.Lines.add('Volume du cube = '+e+ ' cm3');






dimanche 18 mai 2008 à 07:50:10 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !


et "nombre" doit etre remplis comme suit (propriété "Strings") :

0
1
2
3
4
5
6
7
8
9
ne pas arrondir

l'option Ne pas arrondir doit retourner FltPrec = -1 (evenement onchange)

on pourrait même compliquer les choses en ajoutant une autre combobox permettant de choisir l'arrondis, au plus petit, au plus prés, au plus grand (floor, round, ceil).




dimanche 18 mai 2008 à 10:57:07 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Ok super, vraiment merci
mais quand je met la comboBox sur ne pas arrondir ca l'arrondit quand meme a deux chiffres après la virgule.
Vraiment merci f0xi !

dimanche 18 mai 2008 à 16:52:14 | Re : arrondir un nombre selon nombre dans une listbox...

elt93

Desole, pour mon dernier post c'était une erreur d ema part, il fallaiut juste entrer 11 à la place de 10 puisque 'Ne pas arrondir se trouvait à la 11 eme ligne en comptant le 0 et le 10.

lundi 19 mai 2008 à 02:46:57 | Re : arrondir un nombre selon nombre dans une listbox...

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

oui, les programmeurs compte a partir de 0 ...

bytes, 256 valeurs ... de 0 a 255
word, 65536 valeurs ... de 0 a 65535
integer, 2^32 valeurs ... de -2^31 a 2^31-1
longword, 2^32 valeurs ... de 0 a 2^32-1

d'ailleur ... 2^0 = 1







Cette discussion est classé dans : nombre, arrondir, checked, if, then


Répondre à ce message

Sujets en rapport avec ce message

choix radiobutton [ par watrem ] Bonjour voila j'ai installer sur une fiche 2 radiobutton , chaque radio button a pour fonction de ranger des donnees numeriques soit par fichier de 20 arrondir un nombre [ par 980074 ] bête petite question : comment arrondir, en pascal, un nombre entamé vers l'unité supérieure? TRUNC + 1 n'est pas valable pour les nombres entiers...e Arrondir un nombre décimal à 2 chiffres après la virgule ? [ par Rowan ] Bonjour,Tous d'abord un grand merci à DELPHIPROGqui a répondu à mon probleme de tranformationde point en virgule et inversement.J'ai toujours un probl Compter le nombre de formes dans une image binaire [ par MasterNKZ ] Salut tout le monde,Bin g presque tout dis dans le titre, je voudrai savoir si quelqu'un pouvait me dire si il connaissait un algo capable de compter problème de MessageBox [ par eowene ] Bonjour à tous.Ce que je veux faire parrait simple mais pour moi, ça ne lest pas.Voilà, j'ai une feuille sur laquelle il y a un bouton. Ce bouton appe Insertion d'un nombre a virgule dans une listbox [ par lacerto84 ] Salut,J'ai un erreur ECONVERT chaque fois que j'essie d'inserer un nombre a virgule dans une listbox.Pouvez vous m'aider !Merci. DbCtrlGrid [ par Jam_12 ] Bonjour à tousj'utilise un dbctrlgrid pour affichage du contenu de mes tables/requettes, j'ai fixé le nombre de panel a 20. en mode execution le nombr Comptage auto du nombre d'impressions [ par sebflouflou ] bonjour pour mon applications j'ai besoin de compter le nombre d'impression de façon automatique. si vous avez la solution je suis prenant car ca fait générer un nombre [ par cricri_b34 ] Jaimerais savoir comment faire pour générer un nombre entre 1 à 100et ce nombre serait la caption d'un boutton (Button.caption) Tester si un nombre reel est entier [ par Sylvainlefou ] boujourJe cherche une fonction qui test si un reel est entier.Ce genre de fonction existe dans d'autres languages sous le nom de "isint" mais je n'est


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.