diff options
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/epostunit.pas b/epostunit.pas index 24f36cc..e367ad0 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -4542,8 +4542,63 @@ begin end; function tWerte.skaliere(sT: boolean; f: tMyStringList; threads: longint): boolean; +var + bekannteBefehle: tMyStringList; + s: string; + skalierung: array['x'..'z'] of string; + c: char; + transformation: tLineareAchsenVerzerrTransformation; begin + result:=false; + bekannteBefehle:=tMyStringList.create; + for c:='x' to 'z' do + skalierung[c]:='1'; + repeat + if not f.metaReadln(s,true) then begin + gibAus('Unerwartetes Dateiende!',3); + exit; + end; + bekannteBefehle.clear; + if istDasBefehl('Ende',s,bekannteBefehle,false) then + break; + for c:='x' to 'z' do begin + if istDasBefehl(c+':',s,bekannteBefehle,true) then begin + if skalierung[c]<>'1' then begin + gibAus('Ich kann nicht mehrere '+c+'-Skalierungen gleichzeitig anwenden!',3); + bekannteBefehle.free; + exit; + end; + skalierung[c]:=s; + s:=''; + break; + end; + end; + if s='' then + continue; + bekannteBefehle.sort; + gibAus('Verstehe Option '''+s+''' nicht beim Skalieren!'#10'Ich kenne:'#10+bekannteBefehle.text,3); + bekannteBefehle.free; + exit; + until false; + + if (skalierung['x']<>'1') or + (skalierung['y']<>'1') then begin + transformation:=tLineareAchsenVerzerrTransformation.create; + for c:='x' to 'y' do + transformation.fak[c]:=abs(exprToFloat(sT,skalierung[c])); + transformation.fuegeVorgaengerHinzu(transformationen); + transformationen:=transformation; + end; + + if skalierung['z']<>'1' then + fehler('Werteskalierung ist noch nicht implementiert!'); + + if sT then begin + result:=true; + exit; + end; + result:=true; end; function tWerte.macheKomplex(sT: boolean; f: tMyStringList; threads: longint): boolean; |