Diviser une variable integer

Résolu
elt93 Messages postés 46 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 février 2009 - 18 avril 2008 à 19:40
elt93 Messages postés 46 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 février 2009 - 18 avril 2008 à 22:00
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.

4 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 avril 2008 à 20:07
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="" />
0
elt93 Messages postés 46 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 février 2009
18 avril 2008 à 20:26
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 !
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 avril 2008 à 21:09
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 ="" />
0
elt93 Messages postés 46 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 9 février 2009
18 avril 2008 à 22:00
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.
0