summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-08-16 14:25:19 +0200
committerErich Eckner <git@eckner.net>2017-08-16 14:25:19 +0200
commit07d82f6827c57159fa3cf7284caeaf2fbc8355f5 (patch)
tree98aa2cb1b1239e4e995a2df51ad36ec1d6b2b614
parentf5943e483e035c3d9ffcc35c31392665e93fd800 (diff)
downloadepost-07d82f6827c57159fa3cf7284caeaf2fbc8355f5.tar.xz
epostunit.pas: liKo berichtet nun auch über bekannte Befehle
-rw-r--r--epostunit.pas33
1 files changed, 25 insertions, 8 deletions
diff --git a/epostunit.pas b/epostunit.pas
index c629128..4c05f6a 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -2210,6 +2210,7 @@ var
fertig: boolean;
liKoThreads: array of tLiKoThread;
Zeit: extended;
+ bekannteBefehle: tMyStringList;
begin
result:=false;
warteAufBeendigungDesLeseThreads;
@@ -2217,14 +2218,17 @@ begin
genauigkeit:=gExtended;
_xSteps:=0;
_tSiz:=0;
+ bekannteBefehle:=tMyStringList.create;
Zeit:=now;
repeat
+ bekannteBefehle.clear;
if not f.metaReadln(s,true) then begin
gibAus('Unerwartetes Dateiende!',3);
+ bekannteBefehle.free;
exit;
end;
- if s='Ende' then break;
- if startetMit('xMin:',s) then begin
+ if istDasBefehl('Ende',s,bekannteBefehle,false) then break;
+ if istDasBefehl('xMin:',s,bekannteBefehle,true) then begin
if length(liKo)=0 then begin
gibAus('xMin kann erst gesetzt werden, wenn wenigstens eine Komponente bekannt ist',3);
exit;
@@ -2232,7 +2236,7 @@ begin
xMin:=liKo[0].werte.kont2disk('x',exprToFloat(sT,s));
continue;
end;
- if startetMit('xMax:',s) then begin
+ if istDasBefehl('xMax:',s,bekannteBefehle,true) then begin
if length(liKo)=0 then begin
gibAus('xMax kann erst gesetzt werden, wenn wenigstens eine Komponente bekannt ist',3);
exit;
@@ -2240,7 +2244,7 @@ begin
xMax:=liKo[0].werte.kont2disk('x',exprToFloat(sT,s));
continue;
end;
- if startetMit('tMin:',s) then begin
+ if istDasBefehl('tMin:',s,bekannteBefehle,true) then begin
if length(liKo)=0 then begin
gibAus('tMin kann erst gesetzt werden, wenn wenigstens eine Komponente bekannt ist',3);
exit;
@@ -2248,7 +2252,7 @@ begin
tMin:=liKo[0].werte.kont2disk('t',exprToFloat(sT,s));
continue;
end;
- if startetMit('tMax:',s) then begin
+ if istDasBefehl('tMax:',s,bekannteBefehle,true) then begin
if length(liKo)=0 then begin
gibAus('tMax kann erst gesetzt werden, wenn wenigstens eine Komponente bekannt ist',3);
exit;
@@ -2256,13 +2260,14 @@ begin
tMax:=liKo[0].werte.kont2disk('t',exprToFloat(sT,s));
continue;
end;
- if (s='in t auf Zweierpotenz kürzen') or (s='in y auf Zweierpotenz kürzen') then begin
+ if istDasBefehl('in t auf Zweierpotenz kürzen',s,bekannteBefehle,false) or
+ istDasBefehl('in y auf Zweierpotenz kürzen',s,bekannteBefehle,false) then begin
i:=round(power(2,floor(ln(tMax-tMin+1)/ln(2))));
tMax:=(tMax+tMin+i) div 2;
tMin:=tMax-i+1;
continue;
end;
- if s='in x auf Zweierpotenz kürzen' then begin
+ if istDasBefehl('in x auf Zweierpotenz kürzen',s,bekannteBefehle,false) then begin
i:=round(power(2,floor(ln(xMax-xMin+1)/ln(2))));
xMax:=(xMax+xMin+i) div 2;
xMin:=xMax-i+1;
@@ -2271,8 +2276,12 @@ begin
setLength(liKo,length(liKo)+1);
i:=findeWerte(erstesArgument(s),nil,wertes,konturen,false);
- if i<0 then
+ if i<0 then begin
+ bekannteBefehle.sort;
+ gibAus('Ansonsten kenne ich noch folgende Befehle:'#10+bekannteBefehle.text,3);
+ bekannteBefehle.free;
exit;
+ end;
liKo[length(liKo)-1].alpha:=wertes^[i].exprToFloat(sT,s);
while i<0 do i:=i+length(wertes^)-1;
liKo[length(liKo)-1].werte:=wertes^[i mod (length(wertes^)-1)];
@@ -2288,33 +2297,41 @@ begin
end;
if _xSteps<>liKo[length(liKo)-1].werte._xSteps then begin
gibAus('Unterschiedliche Anzahl an x-Schritten: '+intToStr(_xSteps)+' bisher vs. '+intToStr(liKo[length(liKo)-1].werte._xSteps)+' bei '+intToStr(i)+'!',3);
+ bekannteBefehle.free;
exit;
end;
if _tSiz<>liKo[length(liKo)-1].werte._tSiz then begin
gibAus('Unterschiedliche Anzahl an t-Schritten: '+intToStr(_tSiz)+' bisher vs. '+intToStr(liKo[length(liKo)-1].werte._tSiz)+' bei '+intToStr(i)+'!',3);
+ bekannteBefehle.free;
exit;
end;
if liKo[length(liKo)-1].werte.genauigkeit<>liKo[0].werte.genauigkeit then begin
gibAus('Ich bin dumm, ich kann nur Werte mit gleicher Genauigkeit zusammenrechnen!',3);
+ bekannteBefehle.free;
exit;
end;
if liKo[length(liKo)-1].werte.transformationen.xStart<>liKo[0].werte.transformationen.xStart then begin
gibAus('Anfangspostionen passen nicht zusammen ('+floatToStr(liKo[0].werte.transformationen.xStart)+' bisher vs. '+floatToStr(liKo[length(liKo)-1].werte.transformationen.xStart)+' bei '+intToStr(i)+')!',3);
+ bekannteBefehle.free;
exit;
end;
if liKo[length(liKo)-1].werte.transformationen.xStop<>liKo[0].werte.transformationen.xStop then begin
gibAus('Endpostionen passen nicht zusammen ('+floatToStr(liKo[0].werte.transformationen.xStop)+' bisher vs. '+floatToStr(liKo[length(liKo)-1].werte.transformationen.xStop)+' bei '+intToStr(i)+')!',3);
+ bekannteBefehle.free;
exit;
end;
if liKo[length(liKo)-1].werte.transformationen.tStart<>liKo[0].werte.transformationen.tStart then begin
gibAus('Anfangszeiten passen nicht zusammen ('+floatToStr(liKo[0].werte.transformationen.tStart)+' bisher vs. '+floatToStr(liKo[length(liKo)-1].werte.transformationen.tStart)+' bei '+intToStr(i)+')!',3);
+ bekannteBefehle.free;
exit;
end;
if liKo[length(liKo)-1].werte.transformationen.tStop<>liKo[0].werte.transformationen.tStop then begin
gibAus('Endzeiten passen nicht zusammen ('+floatToStr(liKo[0].werte.transformationen.tStop)+' bisher vs. '+floatToStr(liKo[length(liKo)-1].werte.transformationen.tStop)+' bei '+intToStr(i)+')!',3);
+ bekannteBefehle.free;
exit;
end;
until false;
+ bekannteBefehle.free;
if length(liKo)=0 then begin
gibAus('Leere Linearkombination!',3);