summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas55
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;