summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2014-09-09 08:31:20 +0200
committerErich Eckner <git@eckner.net>2014-09-09 08:31:20 +0200
commit3808f45126c19da7592e3f4d2e5c197f3d391409 (patch)
tree5b30cb9ac3a4c0169ca49ca9549697e45b6e76b4 /epostunit.pas
parent7e3e9df068730c3e6e76eaf4e1d5b30e4f9067d3 (diff)
downloadepost-3808f45126c19da7592e3f4d2e5c197f3d391409.tar.xz
Abfrage eingefügt, ob Dateien vorhanden sind -> Absturz abfangen!
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas155
1 files changed, 101 insertions, 54 deletions
diff --git a/epostunit.pas b/epostunit.pas
index 44fb3d3..5865dc1 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -104,6 +104,7 @@ type
function kont2diskFak(dir: char; x: extended): extended;
function disk2kont(dir: char; x: longint): extended;
function disk2kontFak(dir: char; x: longint): extended;
+ procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
public
eWerte: tLLWerteDouble;
sWerte: tLLWerteSingle;
@@ -693,8 +694,8 @@ begin
Genauigkeit:=gExtended;
continue;
end;
- if startetMit('Faktor:',s) then begin
- Vorlagen.faktor:=exprtofloat(false,s);
+ if startetMit('Gamma:',s) then begin
+ Vorlagen.Gamma:=exprtofloat(false,s);
continue;
end;
if startetMit('tmin:',s) then begin
@@ -733,7 +734,7 @@ begin
readln(g,s);
s:=erstesArgument(s,'#');
if startetMit('Gamma :',s) then begin
- Vorlagen.faktor:=1/power(strtofloat(s),3);
+ Vorlagen.Gamma:=strtofloat(s);
erfolg:=erfolg or 1;
continue;
end;
@@ -866,6 +867,11 @@ var i,j,k,num,tmpi,br,SpAnz: longint;
s,t: string;
begin
result:=false;
+ if length(Dateien)=0 then begin
+ gibAus('Keine Dateien zum Einlesen!',3);
+ exit;
+ end;
+
genauigkeit:=gSingle;
for i:=0 to length(dateien)-1 do
genauigkeit:=tGenauigkeit(max(byte(genauigkeit),byte(dateien[i].genauigkeit)));
@@ -1169,13 +1175,14 @@ end;
function tWerte.xscale: extended;
begin
- gibAus(floattostr(Transformationen.xstop)+' '+floattostr(Transformationen.xstart)+' '+inttostr(Transformationen.xsteps),3);
- result:=(Transformationen.xstop-Transformationen.xstart)/(Transformationen.xsteps-1);
+ if Transformationen.xstop=Transformationen.xstart then result:=1
+ else result:=(Transformationen.xstop-Transformationen.xstart)/(Transformationen.xsteps-1);
end;
function tWerte.tscale: extended;
begin
- result:=(Transformationen.tstop-Transformationen.tstart)/(Transformationen.tsiz-1);
+ if Transformationen.tstop=Transformationen.tstart then result:=1
+ else result:=(Transformationen.tstop-Transformationen.tstart)/(Transformationen.tsiz-1);
end;
function tWerte.dichtenParameterErkannt(st: boolean; s: string; threads,xmin,xmax,tmin,tmax: longint): boolean;
@@ -1244,6 +1251,16 @@ begin
end;
end;
+procedure tWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
+begin
+ case Genauigkeit of
+ gSingle:
+ sWerte.schreibeWertIntegriert(f,i,hor);
+ gExtended:
+ eWerte.schreibeWertIntegriert(f,i,hor);
+ end{of case};
+end;
+
function tWerte.ladeDateien(st: boolean; var f: tInputfile; pl: boolean): boolean;
var inputs: tGenerischeInputDateiInfoArray;
@@ -2957,13 +2974,13 @@ begin
end;
function tWerte.erzeugeLineout(st: boolean; params: string): boolean;
-var ab: array[boolean,boolean] of longint;
- s: string;
- f: textfile;
- Zeit: extended;
- i: longint;
- b1,b2: boolean;
-begin
+var ab: array[boolean,boolean] of longint;
+ s: string;
+ f: textfile;
+ Zeit: extended;
+ i: longint;
+ b1,b2: boolean;
+begin gibAus('********* '+Transformationen.dumpParams,3);
result:=false;
warteaufBeendigungDesLeseThreads;
Zeit:=now;
@@ -2977,54 +2994,84 @@ begin
ab[b1,b2]:=0;
params:=trim(params);
- 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 startetMit('integriere ',params) then begin
+ if startetMit('horizontal',params) then b1:=true
+ else if startetMit('vertikal',params) then b1:=false
+ else exit;
+ if st then begin
+ result:=true;
+ exit;
end;
+ if b1 then s:='horizontal'
+ else s:='vertikal';
+ gibAus('... schreibe in '''+params+''', integriere '+s,3);
- if st then begin
- result:=true;
- exit;
- end;
+ if pos(' ',params)>0 then begin
+ gibAus('Leerzeichen im Dateinamen sind nicht erlaubt!',3);
+ exit;
+ 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+')--(';
- end;
- gibAus(s+') ...',3);
-
- 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);
+ 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
- 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])));
+ 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);
+ end;
+
+ if st then begin
+ result:=true;
+ exit;
+ end;
+
+ if pos(' ',params)>0 then begin
+ gibAus('Leerzeichen im Dateinamen sind nicht erlaubt!',3);
+ exit;
+ 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+')--(';
+ end;
+ gibAus(s+') ...',3);
+
+ 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
- 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])));
+ 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])));
+ 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])));
+ end;
+ closefile(f);
end;
- closefile(f);
gibAus('... fertig '+ZeitDarstellen(now-Zeit),3);
result:=true;
end;