summaryrefslogtreecommitdiff
path: root/typenunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2018-02-13 15:30:20 +0100
committerErich Eckner <git@eckner.net>2018-02-13 15:30:20 +0100
commit63b735149fc577c02c788958cbade7a13c41b536 (patch)
treeec11e7b6baabb5cf83a6ef8bf664b9c2fe015660 /typenunit.pas
parent334ddf6f8be18c2f60d178dad1663d74907440d8 (diff)
downloadepost-63b735149fc577c02c788958cbade7a13c41b536.tar.xz
neue Hintergrundabzugsart "haaVertikaleMedianMittel"
Diffstat (limited to 'typenunit.pas')
-rw-r--r--typenunit.pas54
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};