diff options
author | Erich Eckner <git@eckner.net> | 2018-02-13 15:30:20 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-02-13 15:30:20 +0100 |
commit | 63b735149fc577c02c788958cbade7a13c41b536 (patch) | |
tree | ec11e7b6baabb5cf83a6ef8bf664b9c2fe015660 /typenunit.pas | |
parent | 334ddf6f8be18c2f60d178dad1663d74907440d8 (diff) | |
download | epost-63b735149fc577c02c788958cbade7a13c41b536.tar.xz |
neue Hintergrundabzugsart "haaVertikaleMedianMittel"
Diffstat (limited to 'typenunit.pas')
-rw-r--r-- | typenunit.pas | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/typenunit.pas b/typenunit.pas index 428d0bd..fd43697 100644 --- a/typenunit.pas +++ b/typenunit.pas @@ -15,7 +15,7 @@ const speicherHappen = 32768; // Anzahl an mit einem Mal zu reservierender Array type tExtraInfos = class; tKomplexMachModus = (kmmReNull,kmmImNull,kmmPhZuf); - tLowLevelHintergrundAbzugsArt = (haaKeine,haaRandDurchschnitt,haaRandMinimum,haaRandPerzentil,haaMinimum,haaVertikaleMittel); + tLowLevelHintergrundAbzugsArt = (haaKeine,haaRandDurchschnitt,haaRandMinimum,haaRandPerzentil,haaMinimum,haaVertikaleMittel,haaVertikaleMedianMittel); tHintergrundAbzugsArt = record art: tLowLevelHintergrundAbzugsArt; parameter: tExtendedArray; @@ -230,7 +230,7 @@ type function dumpParams: string; override; end; tVerlaufTeilFenster = class(tFenster) - eps,tMin,tMax: extended; + eps,tMin,tMax,tRand: extended; constructor create; constructor create(verlauf: tHintergrundAbzugsArt; epsilon: extended); procedure berechneWerte(anzWerte: longint; schlussBeiWenigInhalt: boolean = false); override; overload; @@ -1304,12 +1304,22 @@ end; constructor tVerlaufTeilFenster.create(verlauf: tHintergrundAbzugsArt; epsilon: extended); begin inherited create; - if (verlauf.art<>haaVertikaleMittel) or - (length(verlauf.parameter)<>2) then - fehler('tVerlaufTeilFenster mit ungültigem Verlauf kreiert - ich brauche haaVertikaleMittel!'); eps:=epsilon; - tMin:=verlauf.parameter[0]; - tMax:=verlauf.parameter[1]; + if (verlauf.art=haaVertikaleMittel) and + (length(verlauf.parameter)=2) then begin + tMin:=verlauf.parameter[0]; + tMax:=verlauf.parameter[1]; + tRand:=-1; + exit; + end; + if (verlauf.art=haaVertikaleMedianMittel) and + (length(verlauf.parameter)=3) then begin + tMin:=verlauf.parameter[0]; + tMax:=verlauf.parameter[1]; + tRand:=verlauf.parameter[2]; + exit; + end; + fehler('tVerlaufTeilFenster mit ungültigem Verlauf kreiert - ich brauche haaVertikaleMittel oder haaVertikaleMedianMittel!'); end; procedure tVerlaufTeilFenster.berechneWerte(anzWerte: longint; schlussBeiWenigInhalt: boolean = false); @@ -1323,9 +1333,10 @@ end; function tVerlaufTeilFenster.dumpParams: string; begin result:= - 'tMin: '+myFloatToStr(tMin)+', '+ - 'tMax: '+myFloatToStr(tMax)+', '+ - 'eps: '+myFloatToStr(eps)+', '+ + 'tMin: '+myFloatToStr(tMin)+', '+ + 'tMax: '+myFloatToStr(tMax)+', '+ + 'tRand: '+myFloatToStr(tRand)+', '+ + 'eps: '+myFloatToStr(eps)+', '+ inherited dumpParams; end; @@ -3456,6 +3467,27 @@ begin result:=true; exit; end; + if istDasBefehl('vertikale Median-Mittel von',s,bekannteArten,true) then begin + bekannteArten.free; + result:=false; + setLength(hintergrundAbzugsArt.parameter,3); + hintergrundAbzugsArt.parameter[0]:=exprToFloat(sT,erstesArgument(s),kvs,cbgv); + if not startetMit('bis ',s) then begin + gibAus('Syntaxfehler in Hintergrundabzugsart, ich erwarte: ''vertikale Median-Mittel von $minT bis $maxT mit Rand $dT''!',3); + setLength(hintergrundAbzugsArt.parameter,0); + exit; + end; + hintergrundAbzugsArt.parameter[1]:=exprToFloat(sT,erstesArgument(s),kvs,cbgv); + if not startetMit('mit Rand ',s) then begin + gibAus('Syntaxfehler in Hintergrundabzugsart, ich erwarte: ''vertikale Median-Mittel von $minT bis $maxT mit Rand $dT''!',3); + setLength(hintergrundAbzugsArt.parameter,0); + exit; + end; + hintergrundAbzugsArt.parameter[2]:=exprToFloat(sT,erstesArgument(s),kvs,cbgv); + hintergrundAbzugsArt.art:=haaVertikaleMedianMittel; + result:=true; + exit; + end; result:=false; hintergrundAbzugsArt.art:=haaKeine; setLength(hintergrundAbzugsArt.parameter,0); @@ -3479,6 +3511,8 @@ begin result:='Rand-Durchschnitt'; haaVertikaleMittel: result:='vertikale Mittel von '+floatToStr(hintergrundAbzugsArt.parameter[0])+' bis '+floatToStr(hintergrundAbzugsArt.parameter[1]); + haaVertikaleMedianMittel: + result:='vertikale Mittel von '+floatToStr(hintergrundAbzugsArt.parameter[0])+' bis '+floatToStr(hintergrundAbzugsArt.parameter[1])+' ohne die extremsten '+floatToStr(hintergrundAbzugsArt.parameter[2])+' Werte ("Median-Mittel")'; else result:='UNBEKANNT'; end{of case}; |