From 9ea35d123958968a93025834910fc4a7368f700d Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 23 May 2018 09:34:08 +0200 Subject: epostunit.pas: findeMaximum kann nun auch alte Werte überschreiben MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epostunit.pas | 56 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 23 deletions(-) (limited to 'epostunit.pas') diff --git a/epostunit.pas b/epostunit.pas index 560707c..d5e52c5 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -6515,12 +6515,12 @@ end; function tWerte.findeMaximum(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; var - datei,s,separator: string; - outF: textfile; - xMin,xMax,tMin,tMax: longint; - toroidal,indizes: boolean; - Zeit: extended; - bekannteBefehle: tMyStringList; + datei,s,separator,identifizierer: string; + outF: tMyStringList; + xMin,xMax,tMin,tMax: longint; + toroidal,indizes,ueberschreiben: boolean; + Zeit: extended; + bekannteBefehle: tMyStringList; begin result:=false; warteAufBeendigungDesLeseThreads; @@ -6535,6 +6535,8 @@ begin bekannteBefehle:=tMyStringList.create; toroidal:=false; indizes:=false; + ueberschreiben:=false; + identifizierer:=bezeichner; repeat if not f.metaReadln(s,true) then begin gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3); @@ -6570,6 +6572,10 @@ begin indizes:=true; continue; end; + if istDasBefehl('alte Werte überschreiben',s,bekannteBefehle,false) then begin + ueberschreiben:=true; + continue; + end; if istDasBefehl('Separator:',s,bekannteBefehle,true) then begin if s='Leerzeichen' then begin separator:=' '; @@ -6582,6 +6588,10 @@ begin separator:=s; continue; end; + if istDasBefehl('Identifizierer:',s,bekannteBefehle,true) then begin + identifizierer:=s; + continue; + end; if istDasBefehl('Ende',s,bekannteBefehle,false) then break; bekannteBefehle.sort; gibAus('Verstehe Option '''+s+''' nicht beim Finden eines Maximums!'#10'Ich kenne:'#10+bekannteBefehle.text,3); @@ -6597,37 +6607,37 @@ begin exit; end; - assign(outF,datei); + outF:=tMyStringList.create; if fileExists(datei) then - append(outF) - else - rewrite(outF); - write(outF, - bezeichner + separator); + outF.loadFromFile(datei); + if ueberschreiben then + outF.grep('^'+escapeStringToRegex(identifizierer + separator,rtFpc),true); + s:=identifizierer + separator; if indizes then - write(outF, + s:=s+ intToStr(_maxP['x']-_xSteps*byte(toroidal and (_maxP['x']*2>=_xSteps))) + separator + intToStr(_maxP['y']-_tSiz*byte(toroidal and (_maxP['y']*2>=_tSiz))) + separator + intToStr(_xSteps) + separator + - intToStr(_tSiz) + separator) + intToStr(_tSiz) + separator else - write(outF, + s:=s+ myFloatToStr(transformationen.positionAufAchseZuWert(lUnten,_maxP['x']/_xSteps) - (_xStop-_xStart) * (1 + 1/(_xSteps-1)) * byte(toroidal and (_maxP['x']*2>=_xSteps)) ) + separator + myFloatToStr(transformationen.positionAufAchseZuWert(lLinks,_maxP['y']/_tSiz) - (_tStop-_tStart) * (1 + 1/(_tSiz-1)) * byte(toroidal and (_maxP['y']*2>=_tSiz)) ) + separator + myFloatToStr((_xStop-_xStart) * (1 + 1/(_xSteps-1))) + separator + - myFloatToStr((_tStop-_tStart) * (1 + 1/(_tSiz-1))) + separator); + myFloatToStr((_tStop-_tStart) * (1 + 1/(_tSiz-1))) + separator; case genauigkeit of gSingle: - writeln(outF, - myFloatToStr(sWerte.werte[_maxP['x'] + _maxP['y']*_xSteps])); + s:=s+ + myFloatToStr(sWerte.werte[_maxP['x'] + _maxP['y']*_xSteps]); gDouble: - writeln(outF, - myFloatToStr(dWerte.werte[_maxP['x'] + _maxP['y']*_xSteps])); + s:=s+ + myFloatToStr(dWerte.werte[_maxP['x'] + _maxP['y']*_xSteps]); gExtended: - writeln(outF, - myFloatToStr(eWerte.werte[_maxP['x'] + _maxP['y']*_xSteps])); + s:=s+ + myFloatToStr(eWerte.werte[_maxP['x'] + _maxP['y']*_xSteps]); end{of case}; - close(outF); + outF.add(s); + outF.saveToFile(datei); gibAus('... fertig '+timetostr(now-Zeit),3); result:=true; end; -- cgit v1.2.3-70-g09d2