diff options
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 98 |
1 files changed, 68 insertions, 30 deletions
diff --git a/epostunit.pas b/epostunit.pas index 8a24fda..3247830 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -123,6 +123,8 @@ type procedure wMinP(miP: tInt64Point); function rMaxP: tInt64Point; procedure wMaxP(maP: tInt64Point); + function rZDP: tInt64Point; + procedure wZDP(zDP: tInt64Point); function rIstKomplex: boolean; procedure wIstKomplex(komplex: boolean); function xScale: extended; @@ -216,6 +218,7 @@ type property _maxW: extended read rMaxW write wMaxW; property _minP: tInt64Point read rMinP write wMinP; property _maxP: tInt64Point read rMaxP write wMaxP; + property _zDP: tInt64Point read rZDP write wZDP; property istKomplex: boolean read rIstKomplex write wIstKomplex; end; tAchse = record @@ -642,6 +645,8 @@ begin else if (s='pMaxX') or (s='maxPX') then result:=wertes^[i].disk2kont('x',wertes^[i]._maxP['x']) else if (s='pMinT') or (s='minPT') or (s='pMinY') or (s='minPY') then result:=wertes^[i].disk2kont('y',wertes^[i]._minP['y']) else if (s='pMaxT') or (s='maxPT') or (s='pMaxY') or (s='maxPY') then result:=wertes^[i].disk2kont('y',wertes^[i]._maxP['y']) + else if (s='pZDX') or (s='zDPX') then result:=wertes^[i].disk2kont('x',wertes^[i]._zDP['x']) + else if (s='pZDT') or (s='zDPT') or (s='pZDY') or (s='zDPY') then result:=wertes^[i].disk2kont('y',wertes^[i]._zDP['y']) else if s='np' then result:=wertes^[i]._np else if (s='beta') or (s='β') then result:=wertes^[i]._beta else if s='Breite' then result:=wertes^[i].transformationen.xStart-wertes^[i].transformationen.xStop @@ -664,6 +669,8 @@ begin '''minP[XYT]'''#10 + '''pMax[XYT]'''#10 + '''maxP[XYT]'''#10 + + '''pZD[XYT]'''#10 + + '''zDP[XYT]'''#10 + '''np'''#10 + '''beta'''#10 + '''β'''#10 + @@ -1101,6 +1108,34 @@ begin end{of case}; end; +function tWerte.rZDP: tInt64Point; +begin + case genauigkeit of + gSingle: result:=sWerte.params.zDP; + gDouble: result:=dWerte.params.zDP; + gExtended: result:=eWerte.params.zDP; + end{of case}; +end; + +procedure tWerte.wZDP(zDP: tInt64Point); +begin + transformationen.zDP:=zDP; + case genauigkeit of + gSingle: begin + sWerte.params.zDP:=zDP; + sWerte.params.refreshKnownValues; + end; + gDouble: begin + dWerte.params.zDP:=zDP; + dWerte.params.refreshKnownValues; + end; + gExtended: begin + eWerte.params.zDP:=zDP; + eWerte.params.refreshKnownValues; + end; + end{of case}; +end; + function tWerte.rIstKomplex: boolean; begin case genauigkeit of @@ -7362,38 +7397,41 @@ begin gExtended: eWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,p); end{of case}; - - outF:=tMyStringList.create; - if fileExists(datei) then - outF.loadFromFile(datei); - if ueberschreiben then - outF.grep('^'+escapeStringToRegex(identifizierer + separator,rtFpc),true); - s:=identifizierer + separator; - if indizes then - s:=s+ - intToStr(p['x']-_xSteps*byte(toroidal and (p['x']*2>=_xSteps))) + separator + - intToStr(p['y']-_tSiz*byte(toroidal and (p['y']*2>=_tSiz))) + separator + - intToStr(_xSteps) + separator + - intToStr(_tSiz) + separator - else - s:=s+ - myFloatToStr(transformationen.positionAufAchseZuWert(lUnten,p['x']/_xSteps) - (_xStop-_xStart) * (1 + 1/(_xSteps-1)) * byte(toroidal and (p['x']*2>=_xSteps)) ) + separator + - myFloatToStr(transformationen.positionAufAchseZuWert(lLinks,p['y']/_tSiz) - (_tStop-_tStart) * (1 + 1/(_tSiz-1)) * byte(toroidal and (p['y']*2>=_tSiz)) ) + separator + - myFloatToStr((_xStop-_xStart) * (1 + 1/(_xSteps-1))) + separator + - myFloatToStr((_tStop-_tStart) * (1 + 1/(_tSiz-1))) + separator; - case genauigkeit of - gSingle: - s:=s+ - myFloatToStr(sWerte.werte[p['x'] + p['y']*_xSteps]); - gDouble: + _zDP:=p; + + if datei<>'' then begin + outF:=tMyStringList.create; + if fileExists(datei) then + outF.loadFromFile(datei); + if ueberschreiben then + outF.grep('^'+escapeStringToRegex(identifizierer + separator,rtFpc),true); + s:=identifizierer + separator; + if indizes then s:=s+ - myFloatToStr(dWerte.werte[p['x'] + p['y']*_xSteps]); - gExtended: + intToStr(_zDP['x']-_xSteps*byte(toroidal and (_zDP['x']*2>=_xSteps))) + separator + + intToStr(_zDP['y']-_tSiz*byte(toroidal and (_zDP['y']*2>=_tSiz))) + separator + + intToStr(_xSteps) + separator + + intToStr(_tSiz) + separator + else s:=s+ - myFloatToStr(eWerte.werte[p['x'] + p['y']*_xSteps]); - end{of case}; - outF.add(s); - outF.saveToFile(datei); + myFloatToStr(transformationen.positionAufAchseZuWert(lUnten,_zDP['x']/_xSteps) - (_xStop-_xStart) * (1 + 1/(_xSteps-1)) * byte(toroidal and (_zDP['x']*2>=_xSteps)) ) + separator + + myFloatToStr(transformationen.positionAufAchseZuWert(lLinks,_zDP['y']/_tSiz) - (_tStop-_tStart) * (1 + 1/(_tSiz-1)) * byte(toroidal and (_zDP['y']*2>=_tSiz)) ) + separator + + myFloatToStr((_xStop-_xStart) * (1 + 1/(_xSteps-1))) + separator + + myFloatToStr((_tStop-_tStart) * (1 + 1/(_tSiz-1))) + separator; + case genauigkeit of + gSingle: + s:=s+ + myFloatToStr(sWerte.werte[_zDP['x'] + _zDP['y']*_xSteps]); + gDouble: + s:=s+ + myFloatToStr(dWerte.werte[_zDP['x'] + _zDP['y']*_xSteps]); + gExtended: + s:=s+ + myFloatToStr(eWerte.werte[_zDP['x'] + _zDP['y']*_xSteps]); + end{of case}; + outF.add(s); + outF.saveToFile(datei); + end; gibAus('... fertig '+timetostr(now-Zeit),3); result:=true; end; |