Diviser une variable integer [Résolu]

elt93 46 Messages postés jeudi 13 mars 2008Date d'inscription 9 février 2009 Dernière intervention - 18 avril 2008 à 19:40 - Dernière réponse : Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention
- 18 avril 2008 à 22:41
Bonjour,
J'aimerais faire un petit calcul en delphi :
var
a: integer;
b: integer;
c: integer;
begin
a:= strtoint(nini.Text);
b:= strtoint(p.Text);
if red.Checked then
b:= b/100;
c:= a*b;
Memo1.Lines.Add(inttostr(c));

end;
Ce que j'aimerais faire c'est diviser la valeur de la variable b par 100 mais lorsque j'execute il me dit type incompatible integer et extended incompatible. Je suppose que le "/" n'est pas le bon signe de division.
Pourriez vous m'aider svp,
cordialement.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 18 avril 2008 à 22:41
3
Merci
Change :
d:= '1.'+floattostr(b);
en
d:= '1 , '+floattostr(b);

Regarde aussi ceci:
http://www.delphifr.com/infomsg_POINT-VIRGULE_444343.aspx
 
@+
Cirec

<hr siz ="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 18 avril 2008 à 20:07
0
Merci
Salut,

c''est normal ... l'aide de Delphi aurait également pu te répondre

pour diviser les entiers il faut utiliser Div
b := b Div 100

ou alors changer de variable:
Var e : Extended;

e := b / 100

regarde aussi du coté de (dans l'aide de Delphi):
 Trunc, Round, FloatToStr, StrToFloat et Format

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
elt93 46 Messages postés jeudi 13 mars 2008Date d'inscription 9 février 2009 Dernière intervention - 18 avril 2008 à 20:26
0
Merci
Merci Cirec,
J'ai fait comme tu m'as dit mais lorsque que je fais b div 100 la valeur de b devient 0. Du coup j'ai été dans l'aide et comme indiqué j'ai créé :
function Diviser(X, Y: Integer): Integer; overload;
begin
  Result := X div Y;
end;
puis à la place de b div 100, j'ai mis :
Diviser(b, 100)
Mais la valeur de b devient toujours 0 !
Commenter la réponse de elt93
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 18 avril 2008 à 21:09
0
Merci
C'est normal

Div ne renvoie que [la partie entière d'une division]:

5 / 100 = 0.05
5 Div 100 = [0].05

pour avoir la valeur réelle if faut changer de type de variable. Ex.

Sur une fiche (nouvelle application) tu pose deux TLabel
et un TButton

Tu double cliques sur le bouton et tu complètes comme suit:

procedure TForm1.Button1Click(Sender: TObject);
Var a, b, c : Integer;
    E : Extended;
begin
  a := 5;
  b := 7;
  C := (b Div 100) * a;
  Label1.Caption : = IntToStr(c);
  E := (b / 100) * a;
  Label2.Caption := FloatToStr(E);
end ;

et tu testes
 
@+
Cirec

<hr siz ="" />
Commenter la réponse de Cirec
elt93 46 Messages postés jeudi 13 mars 2008Date d'inscription 9 février 2009 Dernière intervention - 18 avril 2008 à 22:00
0
Merci
Merci encore cirec,
Comme vous l'avez surement remarqué, je calcule des pourcentages precedemment c'etait pour effectuer des réductions et maintenant pour l'augmentation j'ai encore un probleme, voivi le code :
var
a: integer;
b: extended;
c: extended;
d: string;
begin
a:= strtoint(nini.Text);
b:= strtofloat(p.Text);
d:= '1.'+floattostr(b);
b:= strtofloat(d);
c:= a*b;
Memo1.Lines.Add(floattostr(c));
end;
Si je rends 50 pour p.Text soit b, le resultat est 1.50 et quand j'appuie sur le boutton j'ai un message d'erreur :
'1.50' n'est pas une valeur flottante correct.
Commenter la réponse de elt93

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.