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; |
Partager