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

voici une partie du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!