diff options
author | Erich Eckner <git@eckner.net> | 2014-09-09 08:31:20 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2014-09-09 08:31:20 +0200 |
commit | 3808f45126c19da7592e3f4d2e5c197f3d391409 (patch) | |
tree | 5b30cb9ac3a4c0169ca49ca9549697e45b6e76b4 /epostunit.pas | |
parent | 7e3e9df068730c3e6e76eaf4e1d5b30e4f9067d3 (diff) | |
download | epost-3808f45126c19da7592e3f4d2e5c197f3d391409.tar.xz |
Abfrage eingefügt, ob Dateien vorhanden sind -> Absturz abfangen!
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 155 |
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; |