summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-05-23 09:34:08 +0200
committerErich Eckner <git@eckner.net>2018-05-23 09:34:08 +0200
commit9ea35d123958968a93025834910fc4a7368f700d (patch)
tree516433d436ae911110055bc8b33609e1bea5b54a /epostunit.pas
parent9261f8d1e514e0d1c6d67ff9bd8ede6b3f18a7f6 (diff)
downloadepost-9ea35d123958968a93025834910fc4a7368f700d.tar.xz
epostunit.pas: findeMaximum kann nun auch alte Werte überschreiben
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas56
1 files changed, 33 insertions, 23 deletions
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;