From 9b75646e386074fae0bc6002a0d32eaaa7fb0d95 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 17 Nov 2015 16:24:24 +0100 Subject: Dateien können jetzt komprimiert abgespeichert werden MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + fhunit.pas | 42 +++++++++----------- pegelunit.pas | 47 +++++++++++------------ wetter.konf | 4 +- wetter.lps | 121 +++++++++++++++++++++++++++++----------------------------- 5 files changed, 106 insertions(+), 110 deletions(-) diff --git a/.gitignore b/.gitignore index 8893041..18c24c9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ Log* socket *.txt *.txt.save +*.txt.gz +*.txt.gz.save diff --git a/fhunit.pas b/fhunit.pas index bfd6899..3c7aec6 100644 --- a/fhunit.pas +++ b/fhunit.pas @@ -110,7 +110,7 @@ const implementation -uses unit1, math, systemUnit; +uses unit1, math, myStringListUnit; // tMessPunkt ****************************************************************** @@ -450,7 +450,7 @@ end; procedure tMessPunkte.laden(von: string); var - f: textfile; + f: tMyStringList; s: string; i: longint; begin @@ -459,13 +459,15 @@ begin raise exception.create('Messwertedatei '''+von+''' existiert nicht!'); exit; end; - assignfile(f,von); - reset(f); - while not eof(f) do begin - readln(f,s); + f:=tMyStringList.create; + if rightStr(von,3)='.gz' then + f.loadFromGz(von) + else + f.loadFromFile(von); + while f.readln(s) do werte.add(s); - end; - closefile(f); + f.free; + if length(muts)=0 then begin setlength(muts,20); for i:=0 to length(muts)-1 do @@ -475,23 +477,17 @@ end; procedure tMessPunkte.speichern(nach: string); var - dateischonda: boolean; - f: textfile; - i: longint; + f: tMyStringList; + i: longint; begin - dateischonda:=fileexists(nach); - if dateischonda then - assignfile(f,mkTemp(nach+'.XXXXXX')) - else - assignfile(f,nach); - rewrite(f); + f:=tMyStringList.create; for i:=0 to werte.count-1 do - writeln(f,werte[i].schreibe); - closefile(f); - if dateischonda then begin - deletefile(nach); - rename(f,nach); - end; + f.add(werte[i].schreibe); + if rightStr(nach,3)='.gz' then + f.saveToGz(nach) + else + f.saveToFile(nach); + f.free; end; procedure tMessPunkte.achsenZeichnen(zuZeichnen: tMessGroeszenSet; startZeit,stopZeit: extended); diff --git a/pegelunit.pas b/pegelunit.pas index f5951b6..e63a799 100644 --- a/pegelunit.pas +++ b/pegelunit.pas @@ -83,7 +83,7 @@ type implementation -uses systemunit, math, unit1; +uses math, unit1, myStringListUnit; const pegelStationsNamen: array[tPegelstation] of array[0..1] of string = @@ -434,7 +434,7 @@ end; procedure tPegelStaende.laden(von: string); var - f: textfile; + f: tMyStringList; s: string; ps: tPegelstation; psda,gefunden: boolean; @@ -445,12 +445,14 @@ begin raise exception.create('Pegeldatei '''+von+''' existiert nicht!'); exit; end; - assignfile(f,von); - reset(f); + f:=tMyStringList.create; + if rightStr(von,3)='.gz' then + f.loadFromGz(von) + else + f.loadFromFile(von); psda:=false; ps:=low(TPegelstation); - while not eof(f) do begin - readln(f,s); + while f.readln(s) do begin if pos('Station: ',s)=1 then begin delete(s,1,pos(' ',s)); ps:=low(TPegelstation); @@ -462,7 +464,7 @@ begin inc(ps); end; if not gefunden then begin - closefile(f); + f.free; writeln('Pegelstation '''+s+''' nicht gefunden '''+Pegelstationsnamen[psSaalfeld,0]+'''!'); raise exception.create('Pegelstation '''+s+''' nicht gefunden '''+Pegelstationsnamen[psSaalfeld,0]+'''!'); end; @@ -470,39 +472,34 @@ begin continue; end; if not psda then begin + f.free; writeln('Es wurde noch keine Pegelstation erwähnt!'); raise exception.create('Es wurde noch keine Pegelstation erwähnt!'); end; werte[ps].add(s); end; - closefile(f); + f.free; if not assigned(put) then put:=tPegelUpdateThread.create(self); end; procedure tPegelStaende.speichern(nach: string); var - dateischonda: boolean; - f: textfile; - ps: tPegelStation; - i: longint; + f: tMyStringList; + ps: tPegelStation; + i: longint; begin - dateischonda:=fileexists(nach); - if dateischonda then - assignfile(f,mkTemp(nach+'.XXXXXX')) - else - assignfile(f,nach); - rewrite(f); + f:=tMyStringList.create; for ps:=low(tPegelStation) to high(tPegelStation) do begin - writeln(f,'Station: '+Pegelstationsnamen[ps,0]); + f.add('Station: '+Pegelstationsnamen[ps,0]); for i:=0 to werte[ps].Count-1 do - writeln(f,werte[ps][i].schreibe); - end; - closefile(f); - if dateischonda then begin - deletefile(nach); - rename(f,nach); + f.add(werte[ps][i].schreibe); end; + if rightStr(nach,3)='.gz' then + f.saveToGz(nach) + else + f.saveToFile(nach); + f.free; end; procedure tPegelStaende.achsenZeichnen(zuZeichnen: tPegelStationsSet; startZeit,stopZeit: extended); diff --git a/wetter.konf b/wetter.konf index 264a14e..36c71f9 100644 --- a/wetter.konf +++ b/wetter.konf @@ -1,4 +1,4 @@ pidDatei: /tmp/wetter.pid -wetterDatei: letztes_Wetter.txt -pegelDatei: letzte_Pegel.txt +wetterDatei: letztes_Wetter.txt.gz +pegelDatei: letzte_Pegel.txt.gz datenZeitRaum: 7*4 diff --git a/wetter.lps b/wetter.lps index 9effad0..6563059 100644 --- a/wetter.lps +++ b/wetter.lps @@ -34,25 +34,23 @@ - - + + - - - + + + - - - - + + @@ -88,9 +86,12 @@ - - - + + + + + + @@ -111,123 +112,123 @@ - + - + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - + - - + + - - + + - + - + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + -- cgit v1.2.3-70-g09d2