summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epost.lpr8
-rw-r--r--epost.lps111
-rw-r--r--epostunit.pas181
3 files changed, 164 insertions, 136 deletions
diff --git a/epost.lpr b/epost.lpr
index 7f8d26f..7487ddb 100644
--- a/epost.lpr
+++ b/epost.lpr
@@ -513,8 +513,12 @@ begin
continue;
end;
if istDasBefehl('Lineout',s,bekannteBefehle,true) then begin
- i:=findeWerte(erstesArgument(s),nil,@wertes,@konturen,false);
- if (i<0) or not wertes[i].erzeugeLineout(syntaxTest,s) then begin
+ i:=findeWerte(s,nil,@wertes,@konturen,false);
+ if i<0 then begin
+ aufraeumen;
+ halt(1);
+ end;
+ if not wertes[i].erzeugeLineout(syntaxTest,inf) then begin
aufraeumen;
halt(1);
end;
diff --git a/epost.lps b/epost.lps
index 8846492..dab3f64 100644
--- a/epost.lps
+++ b/epost.lps
@@ -7,8 +7,8 @@
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <TopLine Value="458"/>
- <CursorPos X="56" Y="468"/>
+ <TopLine Value="471"/>
+ <CursorPos X="14" Y="497"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -22,9 +22,10 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="2029"/>
- <CursorPos X="32" Y="2065"/>
+ <TopLine Value="5383"/>
+ <CursorPos X="23" Y="5401"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -47,10 +48,9 @@
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="11"/>
- <TopLine Value="1851"/>
- <CursorPos X="27" Y="1877"/>
+ <TopLine Value="1869"/>
+ <CursorPos X="55" Y="1891"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -77,7 +77,7 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="10"/>
<CursorPos X="35" Y="10"/>
- <UsageCount Value="161"/>
+ <UsageCount Value="165"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@@ -86,7 +86,7 @@
<EditorIndex Value="9"/>
<TopLine Value="382"/>
<CursorPos X="59" Y="417"/>
- <UsageCount Value="48"/>
+ <UsageCount Value="52"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@@ -101,14 +101,14 @@
<EditorIndex Value="7"/>
<TopLine Value="198"/>
<CursorPos X="19" Y="226"/>
- <UsageCount Value="25"/>
+ <UsageCount Value="27"/>
<Loaded Value="True"/>
</Unit11>
<Unit12>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="6"/>
- <TopLine Value="905"/>
- <CursorPos X="25" Y="921"/>
+ <TopLine Value="99"/>
+ <CursorPos Y="112"/>
<UsageCount Value="100"/>
<Loaded Value="True"/>
</Unit12>
@@ -122,7 +122,7 @@
<EditorIndex Value="5"/>
<TopLine Value="32"/>
<CursorPos X="46" Y="50"/>
- <UsageCount Value="84"/>
+ <UsageCount Value="86"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
@@ -130,7 +130,7 @@
<EditorIndex Value="2"/>
<TopLine Value="126"/>
<CursorPos X="7" Y="147"/>
- <UsageCount Value="39"/>
+ <UsageCount Value="41"/>
<Loaded Value="True"/>
</Unit15>
<Unit16>
@@ -228,121 +228,122 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="typenunit.pas"/>
- <Caret Line="450" Column="101" TopLine="421"/>
+ <Caret Line="1522" Column="29" TopLine="1504"/>
</Position1>
<Position2>
<Filename Value="typenunit.pas"/>
- <Caret Line="1810" Column="5" TopLine="1777"/>
+ <Caret Line="454" Column="25" TopLine="436"/>
</Position2>
<Position3>
<Filename Value="typenunit.pas"/>
- <Caret Line="1819" Column="51" TopLine="1790"/>
+ <Caret Line="2492" Column="52" TopLine="2484"/>
</Position3>
<Position4>
<Filename Value="typenunit.pas"/>
- <Caret Line="1849" Column="59" TopLine="1820"/>
+ <Caret Line="338" Column="36" TopLine="322"/>
</Position4>
<Position5>
<Filename Value="typenunit.pas"/>
- <Caret Line="2007" Column="5" TopLine="1975"/>
+ <Caret Line="380" Column="36" TopLine="351"/>
</Position5>
<Position6>
<Filename Value="typenunit.pas"/>
- <Caret Line="2094" TopLine="2063"/>
+ <Caret Line="403" Column="36" TopLine="374"/>
</Position6>
<Position7>
<Filename Value="typenunit.pas"/>
- <Caret Line="2307" Column="3" TopLine="2273"/>
+ <Caret Line="446" Column="36" TopLine="417"/>
</Position7>
<Position8>
<Filename Value="typenunit.pas"/>
- <Caret Line="2388" Column="3" TopLine="2354"/>
+ <Caret Line="475" Column="36" TopLine="446"/>
</Position8>
<Position9>
<Filename Value="typenunit.pas"/>
+ <Caret Line="493" Column="36" TopLine="464"/>
</Position9>
<Position10>
<Filename Value="typenunit.pas"/>
- <Caret Line="282" Column="30" TopLine="253"/>
+ <Caret Line="506" Column="36" TopLine="477"/>
</Position10>
<Position11>
<Filename Value="typenunit.pas"/>
- <Caret Line="1496" Column="42" TopLine="1467"/>
+ <Caret Line="1870" Column="48" TopLine="1841"/>
</Position11>
<Position12>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1810" Column="20" TopLine="1781"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2043" Column="38" TopLine="2021"/>
</Position12>
<Position13>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2007" Column="20" TopLine="1978"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="3143" Column="90" TopLine="3124"/>
</Position13>
<Position14>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2095" Column="20" TopLine="2066"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2447" Column="47" TopLine="2427"/>
</Position14>
<Position15>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2307" Column="20" TopLine="2278"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2517" Column="24" TopLine="2488"/>
</Position15>
<Position16>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2387" Column="30" TopLine="2359"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2516" Column="17" TopLine="2516"/>
</Position16>
<Position17>
- <Filename Value="typenunit.pas"/>
- <Caret Line="377" Column="64" TopLine="358"/>
+ <Filename Value="epostunit.pas"/>
</Position17>
<Position18>
<Filename Value="epostunit.pas"/>
- <Caret Line="2025" Column="36" TopLine="2007"/>
+ <Caret Line="2441" Column="47" TopLine="2419"/>
</Position18>
<Position19>
<Filename Value="epostunit.pas"/>
- <Caret Line="5366" Column="47" TopLine="5362"/>
+ <Caret Line="2447" Column="46" TopLine="2419"/>
</Position19>
<Position20>
<Filename Value="epostunit.pas"/>
+ <Caret Line="2516" Column="25" TopLine="2488"/>
</Position20>
<Position21>
<Filename Value="epostunit.pas"/>
- <Caret Line="134" Column="23" TopLine="106"/>
+ <Caret Line="2686" Column="28" TopLine="2657"/>
</Position21>
<Position22>
<Filename Value="epostunit.pas"/>
- <Caret Line="2067" Column="61" TopLine="2047"/>
+ <Caret Line="2694" Column="28" TopLine="2671"/>
</Position22>
<Position23>
<Filename Value="epostunit.pas"/>
- <Caret Line="2065" Column="32" TopLine="2029"/>
+ <Caret Line="2702" Column="28" TopLine="2673"/>
</Position23>
<Position24>
- <Filename Value="typenunit.pas"/>
- <Caret Line="335" Column="36" TopLine="319"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2773" Column="24" TopLine="2744"/>
</Position24>
<Position25>
- <Filename Value="typenunit.pas"/>
- <Caret Line="378" TopLine="348"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2898" Column="24" TopLine="2869"/>
</Position25>
<Position26>
- <Filename Value="typenunit.pas"/>
- <Caret Line="401" TopLine="371"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="3143" Column="44" TopLine="3114"/>
</Position26>
<Position27>
- <Filename Value="typenunit.pas"/>
- <Caret Line="442" TopLine="412"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4493" TopLine="4464"/>
</Position27>
<Position28>
- <Filename Value="typenunit.pas"/>
- <Caret Line="470" TopLine="439"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5048" Column="31" TopLine="5019"/>
</Position28>
<Position29>
- <Filename Value="typenunit.pas"/>
- <Caret Line="488" TopLine="457"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="177" Column="28" TopLine="161"/>
</Position29>
<Position30>
- <Filename Value="typenunit.pas"/>
- <Caret Line="501" TopLine="470"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5401" Column="11" TopLine="5320"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index d5b98c0..96582c6 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -174,7 +174,7 @@ type
function berechneFFT2d(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean;
function erzeugeLinearesBild(sT: boolean; var f: tMyStringList; threads: longint): boolean;
function erzeugeAscii(sT: boolean; f: tMyStringList): boolean;
- function erzeugeLineout(sT: boolean; params: string): boolean;
+ function erzeugeLineout(sT: boolean; f: tMyStringList): boolean;
function erzeugeBinning(sT: boolean; params: string): boolean;
procedure spiegle(threads: longint); overload;
procedure spiegle(threads,tMin,tMax: longint); overload;
@@ -5375,14 +5375,15 @@ begin
result:=true;
end;
-function tWerte.erzeugeLineout(sT: boolean; params: string): boolean;
+function tWerte.erzeugeLineout(sT: boolean; f: tMyStringList): boolean;
var
- ab: array[boolean,boolean] of longint;
- s: string;
- f: textfile;
- Zeit: extended;
- i: longint;
- b1,b2: boolean;
+ ab: t2x2Extended;
+ datei,s: string;
+ fOut: textfile;
+ bekannteBefehle: tMyStringList;
+ Zeit: extended;
+ i,schritte: longint;
+ integriere,iWaag: boolean;
begin
result:=false;
warteAufBeendigungDesLeseThreads;
@@ -5392,90 +5393,112 @@ begin
gibAus('insgesamt: '+floatToStr(transformationen.xStart)+'..'+floatToStr(transformationen.xStop)+' x '+floatToStr(transformationen.tStart)+'..'+floatToStr(transformationen.tStop),3);
end;
- for b1:=false to true do
- for b2:=false to true do
- ab[b1,b2]:=0;
+ ab['x']:=extPoint(0,0);
+ ab['y']:=extPoint(_xSteps-1,_tSiz-1);
- params:=trim(params);
- if startetMit('integriere ',params) then begin
- if startetMit('waagerecht',params) then b1:=true
- else if startetMit('senkrecht',params) then b1:=false
- else exit;
- if sT then begin
- result:=true;
+ datei:='';
+ integriere:=false;
+ iWaag:=false;
+ bekannteBefehle:=tMyStringList.create;
+ repeat
+ if not f.metaReadln(s,true) then begin
+ gibAus('Unerwartetes Dateiende in '''+paramstr(1)+'''!',3);
+ bekannteBefehle.free;
exit;
end;
- if b1 then s:='waagerecht'
- else s:='senkrecht';
- gibAus('... schreibe in '''+params+''', integriere '+s,3);
-
- if pos(' ',params)>0 then begin
- gibAus('Leerzeichen im Dateinamen sind nicht erlaubt!',3);
- exit;
+ bekannteBefehle.clear;
+ if istDasBefehl('Ende',s,bekannteBefehle,false) then break;
+ if istDasBefehl('Datei:',s,bekannteBefehle,true) then begin
+ datei:=s;
+ continue;
end;
-
- assignFile(f,params);
- rewrite(f);
- for i:=0 to _xSteps*byte(not b1)+_tSiz*byte(b1)-1 do
- schreibeWertIntegriert(f,i,b1);
- closeFile(f);
- end
- else begin
- for b1:=false to true do
- if startetMit('(',params) then begin
- s:=erstesArgument(params,',');
- ab[b1,false]:=kont2disk('x',exprToFloat(sT,s));
- s:=erstesArgument(params,')');
- ab[b1,true]:=kont2disk('t',exprToFloat(sT,s));
- end
- else begin
- ab[true,false]:=ab[false,false];
- ab[true,true]:=ab[false,true];
- ab[false,false]:=(_xSteps-1)*byte(not b1);
- ab[false,true]:=(_tSiz-1)*byte(not b1);
+ if istDasBefehl('integriere waagerecht',s,bekannteBefehle,false) then begin
+ if integriere then begin
+ gibAus('Ich kann bei einem Lineout nur in einer Richtung integrieren!',3);
+ bekannteBefehle.free;
+ exit;
end;
-
- if sT then begin
- result:=true;
- exit;
+ integriere:=true;
+ iWaag:=true;
+ continue;
end;
-
- if pos(' ',params)>0 then begin
- gibAus('Leerzeichen im Dateinamen sind nicht erlaubt!',3);
- exit;
+ if istDasBefehl('integriere senkrecht',s,bekannteBefehle,false) then begin
+ if integriere then begin
+ gibAus('Ich kann bei einem Lineout nur in einer Richtung integrieren!',3);
+ bekannteBefehle.free;
+ exit;
+ end;
+ integriere:=true;
+ iWaag:=false;
+ continue;
end;
-
- s:='... schreibe in '''+params+''' (';
- for i:=0 to 3 do begin
- s:=s+intToStr(ab[odd(i div 2),odd(i)]);
- if not odd(i) then s:=s+','
- else if i=1 then s:=s+')--(';
+ if istDasBefehl('von',s,bekannteBefehle,true) then begin
+ ab['x','x']:=kont2disk('x',exprToFloat(sT,erstesArgument(s,';')));
+ ab['x','y']:=kont2disk('y',exprToFloat(sT,s));
+ continue;
+ end;
+ if istDasBefehl('bis',s,bekannteBefehle,true) then begin
+ ab['y','x']:=kont2disk('x',exprToFloat(sT,erstesArgument(s,';')));
+ ab['y','y']:=kont2disk('y',exprToFloat(sT,s));
+ continue;
end;
- gibAus(s+') ...',3);
+ bekannteBefehle.sort;
+ gibAus('Verstehe Option '''+s+''' nicht bei Erzeugung eines Lineouts!'#10'Ich kenne:'#10+bekannteBefehle.text,3);
+ bekannteBefehle.free;
+ exit;
+ until false;
+ bekannteBefehle.free;
- assignFile(f,params);
- rewrite(f);
- if abs(ab[true,true]-ab[false,true])>abs(ab[true,false]-ab[false,false]) then begin
- if ab[true,true]>ab[false,true] then begin
- for i:=ab[false,true] to ab[true,true] do
- schreibeWert(f,round(ab[false,false]+i/(ab[true,true]-ab[false,true])*(ab[true,false]-ab[false,false])),i);
- end
- else
- for i:=ab[false,true] downto ab[true,true] do
- schreibeWert(f,round(ab[false,false]+i/(ab[true,true]-ab[false,true])*(ab[true,false]-ab[false,false])),i);
- end
- else begin
- if ab[true,false]>ab[false,false] then begin
- for i:=ab[false,false] to ab[true,false] do
- schreibeWert(f,i,round(ab[false,true]+i/(ab[true,false]-ab[false,false])*(ab[true,true]-ab[false,true])));
+ writeln(t2x2ExtendedToStr(ab));
+
+ if datei='' then begin
+ gibAus('Keine Ausgabedatei für den Lineout angegeben!',3);
+ exit;
+ end;
+
+ if not sT then begin
+ assignFile(fOut,datei);
+ rewrite(fOut);
+ end;
+ if integriere then begin
+ if not sT then begin
+ if iWaag then begin
+ if ab['y','y']>ab['x','y'] then begin
+ for i:=round(ab['x','y']) to round(ab['y','y']) do
+ schreibeWertIntegriert(fOut,i,iWaag);
+ end
+ else
+ for i:=round(ab['x','y']) downto round(ab['y','y']) do
+ schreibeWertIntegriert(fOut,i,iWaag);
end
else
- for i:=ab[false,false] downto ab[true,false] do
- schreibeWert(f,i,round(ab[false,true]+i/(ab[true,false]-ab[false,false])*(ab[true,true]-ab[false,true])));
+ if ab['y','x']>ab['x','x'] then begin
+ for i:=round(ab['x','x']) to round(ab['y','x']) do
+ schreibeWertIntegriert(fOut,i,iWaag);
+ end
+ else
+ for i:=round(ab['x','x']) downto round(ab['y','x']) do
+ schreibeWertIntegriert(fOut,i,iWaag);
+ end;
+ end
+ else begin
+ schritte:=
+ round(max(
+ abs(ab['y','y']-ab['x','y']),
+ abs(ab['y','x']-ab['x','x'])
+ ));
+ if schritte=0 then begin
+ gibAus('Anfangs- und Endpunkt des Lineouts sind identisch ('+tExtPointToStr(ab['x'])+' .. '+tExtPointToStr(ab['y'])+')!',3);
+ exit;
end;
- closeFile(f);
+ if not sT then
+ for i:=0 to schritte do
+ schreibeWert(fOut,round(ab['x']+(i/schritte)*(ab['y']-ab['x'])));
+ end;
+ if not sT then begin
+ closeFile(fOut);
+ gibAus('... fertig '+timetostr(now-Zeit),3);
end;
- gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;