Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Débutant
Débutant Pour bien débuter avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/12/2012, 22h43   #1
gaston11
Membre à l'essai
 
Homme armindo simao
Technicien maintenance
Inscription : novembre 2012
Messages : 50
Détails du profil
Informations personnelles :
Nom : Homme armindo simao
Localisation : France, Aude (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2012
Messages : 50
Points : 20
Points : 20
Par défaut formatage qui plante pourquoi?

bonsoir,
j'ai un soucis avec le formatage d'un real,

voici une partie du code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
var  production_jourl :real;
begin       
.......
 
     production_jour := 10.00002;
 
      temp:= format('%.2f', [floatToStr(production_jour)]) ;
 
     Writeln(fichier_sortie, temp);
 
.......
end; ......
et j’obtiens le plantage suivant


[IMG] http://cjoint.com/?BLCwGP10m3L [/IMG]

alors que quelques lignes au dessus j'ai ceci

Code :
1
2
3
 
 
Writeln(fichier_sortie, format('%.3f', [production_jour]));
et là ca marche parfaitement!!

pourquoi??
je vous met le paquet entier .. faites pas gaffe c'est un brouillon



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
 
procedure  generation_fichier_cumul(chemin,type_fichier:string) ;
 Var Fic, Fichier_sortie : TextFile;
    Stg,chemin2,d,mois,y,h,min,sec :String;
    x,nb_fich : integer;
    S:  TSearchRec;
    carac_droite,carac_gauche, date, heure, temp: string;
    production_totale,prod_debut,production_jour,zz,total :real;
 
begin
     total :=0;
     chemin2:=chemin+type_fichier; // repertoire des fichiers
     nb_fich:= CompteFichiers(Chemin2,nil);
     ShowMessage('nombre de fichier  à lire = ' + IntToStr(nb_Fich));
     Form1.Memo1.lines.add('nombre de fichier  à lire = ' + IntToStr(nb_Fich));
     AssignFile(fichier_sortie,chemin+'test.txt');    //cree le fichier
     Rewrite(fichier_sortie); //Crée puis ouvre un nouveau fichier
     if FindFirst(Chemin2,faAnyFile,S)=0  // cherche les fichiers *.csv
    then
    begin
      repeat
          //ouvre le fichier  Lire la premiere ligne
       Form1.Memo1.lines.add('traitement fichier  '+chemin+s.Name ) ;
       AssignFile(fic,chemin+s.Name);
       Reset(Fic); //Ouvre le fichier sans le modifier
       x:=0;  //met a zero le compteur pour ne pas prendre en compte les 8 premieres lignes du fichier
              //  qui sont des description du fichier
       production_jour:=0; production_totale:=0;prod_debut:=0;
       repeat
           Readln(Fic,Stg);               //lit dans le fichier 1 la variable stg
           if x >8  then
           begin
              d:=''; mois:='';y:='';min:='';h:='';
                                         //     Writeln(fichier_sortie,stg);  //  ecrit la ligne complete
              carac_droite:= droite(';', Stg) ;   // extrait le compteur
              if  carac_droite ='' then carac_droite:='0,0';
              carac_droite:= StringReplace(carac_droite, ',', DecimalSeparator, [rfReplaceAll]);
                                //  remplace la virgule du fichier par la decimale du systeme
              carac_gauche := gauche(';', Stg) ;  // extrait la date et l'heure de la chaine stg
 
              date :=  gauche(' ', carac_gauche) ;  // extrait la date
              d:=  gauche('/' ,date);  // on recupere le jour
              mois := GaucheNDroite('/',date,1);  // le mois
              y := GaucheNDroite('/',date,2); // l'année
              heure :=  droite(' ', carac_gauche) ;  // extrait l'heure
 
              h := gauche(':', heure) ;  // extrait l'heure
              min := droite(':', heure) ; // extrait les minutes
              Form1.Memo1.lines.add('  jour :'+d+' mois: ' + mois+' annee: '+y+' heures: '+ h+' min:  '+min);
 
              zz:=   StrToFloat(carac_droite);  // transforme la production en real
              if  prod_debut=0 then  prod_debut:= zz; // initialise la prod journaliere
              production_jour:= zz-prod_debut;  // cacul la prod de la journée
 
 
              Writeln(fichier_sortie, format('%.3f', [production_jour]));
 
             Writeln(fichier_sortie,' *************   ',d,'    ',mois,'     ',y,'   ######  ',h,'    ',min,'     ',sec);
 
 
           end;     
           inc(x);  // ligne suivante
           until eof(fic);
       CloseFile(Fic); //Ferme l'association entre la variable F et le fichier texte
       production_jour :=  production_jour +0.00001;
       Writeln(fichier_sortie, '****************************************************************');
 
 
      production_jour := 10.00002;
 
      temp:= format('%.2f', [floatToStr(production_jour)]) ;
 
     Writeln(fichier_sortie, temp);
 
 
       total := total+  production_jour;
        Writeln(fichier_sortie, '****************************************************************');
 
       exit;  // fin pourt test
 
    Until FindNext(S)<>0; // continue tant qu'il y a des fichiers
  end;
  Writeln(fichier_sortie, '****************************************************************');
  Writeln(fichier_sortie);
  Writeln(fichier_sortie,'production totale ************* ' + floatToStr(total )+'  kwh   *******************');
  CloseFile(fichier_sortie); // ferme le fichier de sortie
end;

merci de votre aide!!

ps je vais etre absent quelques jours

Bonnes fêtes a tous!
gaston11 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/12/2012, 00h52   #2
guillemouze
Membre chevronné
 
Avatar de guillemouze
 
Inscription : novembre 2004
Messages : 534
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : novembre 2004
Messages : 534
Points : 698
Points : 698
normal, l'argument que tu lui passe est floatToStr(production_jour) qui est un string !
il faut juste ne pas le convertir en chaine :
Code :
temp:= format('%.2f', [production_jour]) ;
guillemouze est déconnecté   Envoyer un message privé Réponse avec citation 40
Vieux 31/12/2012, 09h28   #3
Rayek
Modérateur
 
Avatar de Rayek
 
Homme
Développeur informatique
Inscription : mars 2005
Messages : 4 992
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2005
Messages : 4 992
Points : 7 733
Points : 7 733
Il existe aussi la fonction FormatFloat

Code :
1
2
 
Writeln(fichier_sortie, FormatFloat('0.00', production_jour));
__________________
Modérateur Delphi Combattez la brute
Aucune réponse aux sollicitations techniques par MP

Le guide du bon forumeur :__________
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3
Rayek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2013, 22h27   #4
gaston11
Membre à l'essai
 
Homme armindo simao
Technicien maintenance
Inscription : novembre 2012
Messages : 50
Détails du profil
Informations personnelles :
Nom : Homme armindo simao
Localisation : France, Aude (Languedoc Roussillon)

Informations professionnelles :
Activité : Technicien maintenance
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2012
Messages : 50
Points : 20
Points : 20
merci a vous!!
effectivement ca marche mieux ainsi!!

bonne et heureuse année 2013.
gaston11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h55.


 
 
 
 
Partenaires

Hébergement Web