[Delphi] Conversion de types (single et string)

Conversion de types (single et string) [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 28-07-2008 à 19:20:17    

Salut,
J'ai un message d'erreur qui dit que la division par zéro de virgule flottante ! bref j'ai pas de zéro, j'ai placé ce showmessage pour traquer l'erreur, m75 égale à un nombre petit 1.37...E-38, très petit au point qu'il est impossible de diviser ! j'ai aussi un avertissement qui dit que la variable r1 n'est peut être pas initialisé !
je ne sais pas d'où ça vient, de la vitesse d'exécution ?

 

Voila la procédure en question !

  
Code :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var m75,m25,p75,p25,f75,f25 : single ;
  3.     r1,r2,r3,r4,r5 : single;
  4. begin
  5. m75 := strtofloat(labelededit1.text);
  6. m25 := strtofloat(labelededit2.Text);
  7. p75 := strtofloat(labelededit4.Text);
  8. p25 := strtofloat(labelededit5.Text);
  9. f75 := strtofloat(labelededit7.Text);
  10. f25 := strtofloat(labelededit8.text);
  11. { m75 := single(labelededit1.text);
  12. m25 := single(labelededit2.Text);
  13. p75 := single(labelededit4.Text);
  14. p25 := single(labelededit5.Text);
  15. f75 := single(labelededit7.Text);
  16. f25 := single(labelededit8.text); }
  17. showmessage(floattostr(m75));
  18. r1 := 2*(m75*(75/100)+m25*(25/100));
  19. r2 := 2*(p75*(75/100)+p25*(25/100));
  20. r3 := 2*(f75*(75/100)+f25*(25/100));
  21. r4 := r1+r2+r3;
  22. r5 := r4/r5;
  23. labelededit3.Text := floattostr(r1);
  24. labelededit6.Text := floattostr(r2);
  25. labelededit9.Text := floattostr(r3);
  26. labelededit10.Text := floattostr(r4);
  27. labelededit11.Text := floattostr(r5);
  28. end;
 

merci d'avance !


Message édité par Nethacker le 28-07-2008 à 20:29:22

---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 19:20:17   

Reply

Marsh Posté le 28-07-2008 à 20:04:14    

Salut,
 
je connais pas l'instruction single, pour moi c'est qu'un type,  mais pourquoi tu fais pas plutôt:
 
m75 := strtofloat(labelededit1.text);
 
ça parrait plus logique
 
à mon avis m75 := single(labelededit1.text); c'est foireux donc ça te donne un resultat aléatoire dans M75
 
après, peut être que le compilo te dis que R1 n'est pêtre pas initialisée du fait que la ligne m75 := single(labelededit1.text); n'est apas sencée initialiser proprement m75 et m25
 
c'est qu'un avis mais utilise plutôt strtofloat

Reply

Marsh Posté le 28-07-2008 à 20:22:56    

Salut,
Je ne sais pas si ce single() existe mais je croyais que ça marchait tout comme Pchar() ! je vais essayer strtofloat()

 

merci !

 

Edit :
essai ... showmessage m'affiche la valeur entrée ! ^^ merci bien
et toujours l'erreur division par zéro de virgule flottante, la ligne 16 devient rouge !
r5 := r4/r5;

 

Merci d'avance !


Message édité par Nethacker le 28-07-2008 à 20:31:13

---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 20:29:54    

l'initialisation de r5 ne peut être effectué !

 

Edit: réglé en déclarant les variables en début et pas seulement pour la procédure !

Message cité 1 fois
Message édité par Nethacker le 28-07-2008 à 20:31:05

---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 20:47:34    

J'ai ajouté un showmessage juste avant la ligne d'erreur et ça marche !
donc c'est dans la division je vais essayer de remplacer / par div !
XD


---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 21:14:29    

Nethacker a écrit :

l'initialisation de r5 ne peut être effectué !
 
Edit: réglé en déclarant les variables en début et pas seulement pour la procédure !


 
méthode du gros goret [:athlonxp2100+] je sais meme pas comment ça peut marcher  
 
j'avais pô vu...
 
r5 := r4/r5; -> bah ça peut pas aller, déja r5 n'est pas initilalisée et en plus tu recalcule ça valeur en la recalculant sur elle-meme n'étant pas init... :ange:  
 
je sais pas ce que tu compte faire mais ça sert à rien  :??:
 
en fait R5 ne sert à rien à moins que t'ai oublié un truc dans ce que tu as à faire
 
ReEdit: sinon div ça doit être mieux que / mais à confirmer

Message cité 1 fois
Message édité par Flagad'aware le 28-07-2008 à 21:17:39
Reply

Marsh Posté le 28-07-2008 à 21:17:39    

lol j'avais pas fait attention xD ! merci beaucoup en fait c'est r4/5 lol mais dit quel con je suis !
 
Merci bien xD


---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 21:18:51    

Flagad'aware a écrit :


 
méthode du gros goret [:athlonxp2100+] je sais meme pas comment ça peut marcher  
 


 
les variables sont initialisés rapidement ! après tu calcules et tu fais des opérations il se peut que r5 la dernière avant les grosses opérations xD ! ne se déclare pas !
 
 


---------------
God is one, not 2 nor 3!
Reply

Marsh Posté le 28-07-2008 à 21:19:11    

tu parle, ça arrive toujours ce genre de fautes pis c'est galère à débugger des fois  :D

Reply

Marsh Posté le 28-07-2008 à 21:21:30    

Nethacker a écrit :


 
les variables sont initialisés rapidement ! après tu calcules et tu fais des opérations il se peut que r5 la dernière avant les grosses opérations xD ! ne se déclare pas !
 
 


 
yes, elle est déclarée mais pas initialisé alors elle a quand meme une valeur qui permet un espèce de calcul

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed