diff options
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 60 |
1 files changed, 28 insertions, 32 deletions
diff --git a/epostunit.pas b/epostunit.pas index d59d222..c0df199 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -135,7 +135,7 @@ type function disk2kont(x: tExtPoint): tExtPoint; overload; inline; function disk2kontFak(senkrecht: boolean; x: longint): extended; overload; inline; function disk2kontFak(dir: char; x: longint): extended; overload; - procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean); + procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended); function ermittleHintergrund(sT: boolean; threads: longint; hintergrundAbzugsArt: tHintergrundAbzugsArt; out hintergrund: tExtendedArray): boolean; procedure holeRAM(ausgaben: byte); inline; public @@ -183,8 +183,7 @@ type procedure verschiebe(threads: longint; richtung: tInt64Point); procedure ermittlePhasenWinkel(threads: longint; skalierung: extended); procedure fft2dNachbearbeitung(threads: longint; nB: tFFTDatenordnung); - procedure schreibeWert(var f: textfile; p: tInt64Point); overload; inline; - procedure schreibeWert(var f: textfile; x,y: longint); overload; inline; + procedure schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended); inline; function exprToFloat(sT: boolean; s: string): extended; function findeMaximum(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; function paramsDump: string; @@ -193,10 +192,6 @@ type property transformationen: tTransformation read rTransformationen write wTransformationen; property _xSteps: longint read rXSteps write wXSteps; property _tSiz: longint read rTSiz write wTSiz; -// property _xStart: extended read rXStart write wXStart; -// property _xStop: extended read rXStop write wXStop; -// property _tStart: extended read rTStart write wTStart; -// property _tStop: extended read rTStop write wTStop; property _np: extended read rNp write wNp; property _beta: extended read rBeta write wBeta; property _minW: extended read rMinW write wMinW; @@ -2098,15 +2093,15 @@ begin end; end; -procedure tWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean); +procedure tWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended); begin case genauigkeit of gSingle: - sWerte.schreibeWertIntegriert(f,i,hor); + sWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen); gDouble: - dWerte.schreibeWertIntegriert(f,i,hor); + dWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen); gExtended: - eWerte.schreibeWertIntegriert(f,i,hor); + eWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen); end{of case}; end; @@ -5381,13 +5376,13 @@ end; function tWerte.erzeugeLineout(sT: boolean; f: tMyStringList): boolean; var - ab: t2x2Extended; - datei,s: string; - fOut: textfile; - bekannteBefehle: tMyStringList; - Zeit: extended; - i,schritte: longint; - integriere,iWaag: boolean; + ab: t2x2Extended; + datei,s: string; + fOut: textfile; + bekannteBefehle: tMyStringList; + Zeit,entspringen,letzterWert: extended; + i,schritte: longint; + integriere,iWaag: boolean; begin result:=false; warteAufBeendigungDesLeseThreads; @@ -5403,6 +5398,7 @@ begin datei:=''; integriere:=false; iWaag:=false; + entspringen:=-1; bekannteBefehle:=tMyStringList.create; repeat if not f.metaReadln(s,true) then begin @@ -5446,6 +5442,10 @@ begin ab['y','y']:=kont2disk('y',exprToFloat(sT,s)); continue; end; + if istDasBefehl('entspringen',s,bekannteBefehle,true) then begin + entspringen:=exprToFloat(sT,s); + continue; + end; bekannteBefehle.sort; gibAus('Verstehe Option '''+s+''' nicht bei Erzeugung eines Lineouts!'#10'Ich kenne:'#10+bekannteBefehle.text,3); bekannteBefehle.free; @@ -5462,25 +5462,26 @@ begin assignFile(fOut,datei); rewrite(fOut); end; + letzterWert:=nan; if integriere then begin if not sT then begin if iWaag then begin if ab['y','y']>ab['x','y'] then begin for i:=round(ab['x','y']) to round(ab['y','y']) do - schreibeWertIntegriert(fOut,i,iWaag); + schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen); end else for i:=round(ab['x','y']) downto round(ab['y','y']) do - schreibeWertIntegriert(fOut,i,iWaag); + schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen); end else if ab['y','x']>ab['x','x'] then begin for i:=round(ab['x','x']) to round(ab['y','x']) do - schreibeWertIntegriert(fOut,i,iWaag); + schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen); end else for i:=round(ab['x','x']) downto round(ab['y','x']) do - schreibeWertIntegriert(fOut,i,iWaag); + schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen); end; end else begin @@ -5495,7 +5496,7 @@ begin end; if not sT then for i:=0 to schritte do - schreibeWert(fOut,round(ab['x']+(i/schritte)*(ab['y']-ab['x']))); + schreibeWert(fOut,ab['x']+(i/schritte)*(ab['y']-ab['x']),letzterWert,entspringen); end; if not sT then begin closeFile(fOut); @@ -5545,17 +5546,12 @@ begin result:=true; end; -procedure tWerte.schreibeWert(var f: textfile; p: tInt64Point); -begin - schreibeWert(f,p['x'],p['y']); -end; - -procedure tWerte.schreibeWert(var f: textfile; x,y: longint); +procedure tWerte.schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended); begin case genauigkeit of - gSingle: sWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y))); - gDouble: dWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y))); - gExtended: eWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y))); + gSingle: sWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen); + gDouble: dWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen); + gExtended: eWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen); end{of Case}; end; |