unit DS_special_pas; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Math, TeEngine, Series, TeeProcs, Chart, ComCtrls; type TForm1 = class(TForm) Image1: TImage; Label1: TLabel; Image2: TImage; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Label6: TLabel; Edit9: TEdit; Label7: TLabel; Edit10: TEdit; Label8: TLabel; Edit11: TEdit; Label10: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Edit13: TEdit; Edit14: TEdit; Edit15: TEdit; Edit16: TEdit; Label11: TLabel; Label12: TLabel; Label19: TLabel; Edit24: TEdit; Label20: TLabel; Edit25: TEdit; Image5: TImage; Label21: TLabel; Image6: TImage; Label22: TLabel; Label23: TLabel; Edit26: TEdit; Edit27: TEdit; Edit28: TEdit; Edit29: TEdit; Label25: TLabel; Edit34: TEdit; Edit35: TEdit; Edit36: TEdit; Image7: TImage; Image3: TImage; Image9: TImage; Image10: TImage; Edit33: TEdit; Edit38: TEdit; Edit39: TEdit; Edit41: TEdit; CheckBox1: TCheckBox; Label24: TLabel; Edit32: TEdit; Image8: TImage; Label5: TLabel; Image11: TImage; Image12: TImage; Edit12: TEdit; Edit17: TEdit; Edit19: TEdit; Edit20: TEdit; Edit21: TEdit; Edit22: TEdit; Label9: TLabel; Edit23: TEdit; Edit30: TEdit; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label30: TLabel; Edit31: TEdit; Label31: TLabel; Edit42: TEdit; Button5: TButton; Button6: TButton; Label13: TLabel; Label32: TLabel; Label33: TLabel; Edit44: TEdit; Edit45: TEdit; ProgressBar1: TProgressBar; Label34: TLabel; Edit46: TEdit; Label35: TLabel; Edit47: TEdit; Edit48: TEdit; Button7: TButton; Button8: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Label36: TLabel; Label37: TLabel; Label38: TLabel; Edit49: TEdit; Edit50: TEdit; Label39: TLabel; Label40: TLabel; Memo1: TMemo; Label41: TLabel; Chart1: TChart; Series3: TPointSeries; Series1: TPointSeries; Series2: TPointSeries; Series4: TPointSeries; Series5: TPointSeries; Series6: TPointSeries; Series7: TFastLineSeries; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button7Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; N,NJ:integer; yh:array[0..9] of real; ar,a2r,a3r,a3ro,tx, rr,a2ro,a3d,a2d,ad,d:array[0..20000] of real; am,ta1,ta2,rt,tt0,tt1,tt2,agon,ag, rish,arish,a2rish,a3rish,a3roish, dish,adish,a2dish,a3dish,a2roish, k01,k10,k12,k21,k23,k32,k34,k43, k87,k78,k76,k67,k65,k56,k54,k45, k08,k80,k96,k69,k29,k92, tauf,taus:real; implementation {$R *.DFM} function Sign(xs:real):real; begin if xs=0 then Sign:=0 else if xs>0 then Sign:=1 else Sign:=-1; end; function Vspl(xt,x0,x1,xa:real):real; var xf1,xf2,taf,tas,pok:real; begin pok:=1.0/6.0; taf:=tauf/Ln((1-Power(0.1,pok))/(1-Power(0.9,pok))); tas:=-1.0*taus/Ln(0.1); if xt<x0 then xf1:=0.0 else xf1:=Power(1.0-exp((x0-xt)/taf),6.0); if xt<(x0+x1) then xf2:=1.0 else xf2:=1.0*exp((x0+x1-xt)/tas); Vspl:=xf1*xf2*xa; end; function so1(so1so0,so1so1,so1so2:real):real; begin so1:=k01*ag*so1so0-k10*so1so1-k12*ag*so1so1+k21*so1so2; end; function so2(so2so1,so2so2,so2so3,so2so9:real):real; begin so2:=k12*ag*so2so1-k21*so2so2-k23*ag*so2so2+k32*so2so3 -k29*so2so2+k92*so2so9; end; function so3(so3so2,so3so3,so3so4:real):real; begin so3:=k23*ag*so3so2-k32*so3so3-k34*so3so3+k43*so3so4; end; function so4(so4so3,so4so4,so4so5:real):real; begin so4:=k34*so4so3-k43*so4so4-k45*so4so4+k54*so4so5; end; function so9(so9so2,so9so6,so9so9:real):real; begin so9:=k29*so9so2-k92*so9so9-k96*so9so9+k69*so9so6; end; function so5(so5so4,so5so5,so5so6:real):real; begin so5:=k65*ag*so5so6-k56*so5so5-k54*so5so5+k45*so5so4; end; function so6(so6so5,so6so6,so6so7,so6so9:real):real; begin so6:=k76*ag*so6so7-k67*so6so6-k65*ag*so6so6+k56*so6so5 -k69*so6so6+k96*so6so9; end; function so7(so7so6,so7so7,so7so8:real):real; begin so7:=k87*ag*so7so8-k78*so7so7+k67*so7so6-k76*ag*so7so7; end; function so8(so8so0,so8so7,so8so8:real):real; begin so8:=k78*so8so7-k87*ag*so8so8-k80*so8so8+k08*so8so0; end; procedure TForm1.Button3Click(Sender: TObject); var iii,jjj:integer; fou:TextFile; si:string; begin si:=TimeToStr(Time); jjj:=Length(si)-1; for iii:=0 to jjj do if si[iii]=':' then si[iii]:='_'; si:='DS_special_'+si+'.dat'; AssignFile(fou,si); Rewrite(fou); Writeln(fou,' t r ar a2r a3r a3ro a2ro a3d a2d ad d rm'); for iii:=1 to NJ do Writeln(fou,tx[iii]:9:3,rr[iii]:7:3,ar[iii]:7:3,a2r[iii]:7:3,a3r[iii]:7:3, a3ro[iii]:7:3,a2ro[iii]:7:3,a3d[iii]:7:3,a2d[iii]:7:3,ad[iii]:7:3,d[iii]:7:3); Writeln(fou); if CheckBox1.Checked=false then begin Writeln(fou,'ag = ',agon:9:6,' t0 = ',tt0:9:6,' t1 = ',tt1:9:6,' t2 = ',tt2:9:6); Writeln(fou,'am = ',am:9:6,' tau1 = ',ta1:12:6,' tau2 = ',ta2:12:6,' rt = ',rt:12:6); Writeln(fou,'tauf = ',tauf:9:6,' taus = ',taus:9:6,' Parametr file: ',Edit48.Text); end; Writeln(fou); Writeln(fou,'k01 = ',k01:13:5,' k10 = ',k10:13:5); Writeln(fou,'k12 = ',k12:13:5,' k21 = ',k21:13:5); Writeln(fou,'k23 = ',k23:13:5,' k32 = ',k32:13:5); Writeln(fou,'k34 = ',k34:13:5,' k43 = ',k43:13:5); Writeln(fou); Writeln(fou,'k87 = ',k87:13:5,' k78 = ',k78:13:5); Writeln(fou,'k76 = ',k76:13:5,' k67 = ',k67:13:5); Writeln(fou,'k65 = ',k65:13:5,' k56 = ',k56:13:5); Writeln(fou,'k54 = ',k54:13:5,' k45 = ',k45:13:5); Writeln(fou); Writeln(fou,'k08 = ',k08:13:5,' k80 = ',k80:13:5); Writeln(fou,'k96 = ',k96:13:5,' k69 = ',k69:13:5); Writeln(fou,'k29 = ',k29:13:5,' k92 = ',k92:13:5); Writeln(fou); Writeln(fou,' d ------- ad ------ a2d ----- a3d ----- a2ro'); Writeln(fou,' r ------- ar ------ a2r ----- a3r ----- a3ro'); for iii:=8 downto 5 do Write(fou,yh[iii]:10:5); Writeln(fou,yh[9]:10:5); for iii:=0 to 4 do Write(fou,yh[iii]:10:5); CloseFile(fou); end; procedure TForm1.Button1Click(Sender: TObject); var fop:TextFile; par:real; ps,psn:string; pj,pk,pm:integer; begin ForceCurrentDirectory:=True; OpenDialog1.DefaultExt:='tpt'; OpenDialog1.Filter:='Parameter files(*.tpt)|*.tpt'; OpenDialog1.FilterIndex := 1; if OpenDialog1.Execute then begin ps:=OpenDialog1.FileName; pk:=Length(ps); pm:=1; for pj:=1 to pk do if ps[pj]='\' then pm:=pj; psn:=ps; Delete(psn,1,pm); AssignFile(fop,ps); Reset(fop); readln(fop,par); Edit1.Text:=FloatToStrF(par,ffFixed,9,2); readln(fop,par); Edit2.Text:=FloatToStrF(par,ffFixed,5,2); readln(fop,par); Edit3.Text:=FloatToStrF(par,ffFixed,9,2); readln(fop,par); Edit4.Text:=FloatToStrF(par,ffFixed,5,2); readln(fop,par); Edit12.Text:=FloatToStrF(par,ffFixed,9,2); readln(fop,par); Edit17.Text:=FloatToStrF(par,ffFixed,5,2); readln(fop,par); Edit5.Text:=FloatToStrF(par,ffFixed,6,2); readln(fop,par); Edit6.Text:=FloatToStrF(par,ffFixed,6,2); readln(fop,par); Edit7.Text:=FloatToStrF(par,ffFixed,8,3); readln(fop,par); Edit8.Text:=FloatToStrF(par,ffFixed,8,5); readln(fop,par); Edit26.Text:=FloatToStrF(par,ffFixed,6,2); readln(fop,par); Edit27.Text:=FloatToStrF(par,ffFixed,7,3); readln(fop,par); Edit28.Text:=FloatToStrF(par,ffFixed,6,2); readln(fop,par); Edit29.Text:=FloatToStrF(par,ffFixed,7,3); readln(fop,par); Edit19.Text:=FloatToStrF(par,ffFixed,6,2); readln(fop,par); Edit20.Text:=FloatToStrF(par,ffFixed,7,3); readln(fop,par); Edit33.Text:=FloatToStrF(par,ffFixed,7,5); readln(fop,par); Edit39.Text:=FloatToStrF(par,ffFixed,7,3); readln(fop,par); Edit38.Text:=FloatToStrF(par,ffFixed,8,3); readln(fop,par); Edit22.Text:=FloatToStrF(par,ffFixed,8,5); readln(fop,par); Edit21.Text:=FloatToStrF(par,ffFixed,7,2); readln(fop,par); Edit41.Text:=FloatToStrF(par,ffFixed,7,2); readln(fop,par); Edit9.Text:=FloatToStrF(par,ffFixed,9,7); readln(fop,par); Edit10.Text:=FloatToStrF(par,ffFixed,7,2); readln(fop,par); Edit31.Text:=FloatToStrF(par,ffFixed,7,2); readln(fop,par); Edit42.Text:=FloatToStrF(par,ffFixed,7,2); readln(fop,par); Edit46.Text:=FloatToStrF(par,ffFixed,8,4); readln(fop,par); Edit47.Text:=FloatToStrF(par,ffFixed,8,4); Edit48.Text:=psn; CloseFile(fop); end else begin Edit1.Text:='600000.0'; Edit2.Text:='10000.0'; Edit3.Text:='400000.0'; Edit4.Text:='20000.0'; Edit12.Text:='200000.0'; Edit17.Text:='30000.0'; Edit5.Text:='50.0'; Edit6.Text:='0.1'; Edit7.Text:='15.0'; Edit8.Text:='0.0003'; Edit26.Text:='300000.0'; Edit27.Text:='0.2'; Edit28.Text:='200000.0'; Edit29.Text:='0.4'; Edit19.Text:='100000.0'; Edit20.Text:='0.6'; Edit33.Text:='0.01'; Edit39.Text:='500.0'; Edit38.Text:='15.0'; Edit22.Text:='0.0003'; Edit21.Text:='50.0'; Edit41.Text:='0.1'; Edit9.Text:='0.01'; Edit10.Text:='0.0'; Edit31.Text:='2.0'; Edit42.Text:='0.0'; Edit46.Text:='0.04'; Edit47.Text:='0.04'; Edit48.Text:='control.tpt'; end; Edit11.Text:='0.005'; Edit13.Text:='1.0'; Edit14.Text:='0.0'; Edit15.Text:='0.0'; Edit30.Text:='0.0'; Edit16.Text:='0.0'; Edit45.Text:='0.0'; Edit23.Text:='0.0'; Edit36.Text:='0.0'; Edit35.Text:='0.0'; Edit34.Text:='0.0'; Edit44.Text:='???.?'; Edit24.Text:='???.?'; Edit49.Text:='1.0'; Edit50.Text:='???.?'; Edit25.Text:='???.?'; Edit32.Text:='???.?'; end; procedure TForm1.Button4Click(Sender: TObject); begin Series3.Clear; Series2.Clear; Series1.Clear; Series4.Clear; Series5.Clear; Series6.Clear; Series7.Clear; end; procedure TForm1.Button2Click(Sender: TObject); label 1,2,51,79,99; const Nmax=10000000; uround:real=1.73e-18; c2:real=1./18. ; c3:real=1./12. ; c4:real=1./8. ; c5:real=5./16. ; c6:real=3./8. ; c7:real=59./400.; c8:real=93./200.; c9:real=5490023248./9719169821.; c10:real=13./20. ; c11:real=1201146811./1299019798.; c12:real=1. ; c13:real=1. ; a21:real=1./18. ; a31:real=1./48. ; a32:real=1./16. ; a41:real=1./32. ; a43:real=3./32. ; a51:real=5./16. ; a53:real= -75./64. ; a54:real= 75./64. ; a61:real=3./80. ; a64:real=3./16. ; a65:real=3./20. ; a71:real=29443841./614563906. ; a74:real=77736538./692538347. ; a75:real= -28693883./1125.e6 ; a76:real=23124283./18.e8 ; a81:real=16016141./946692911. ; a84:real=61564180./158732637. ; a85:real=22789713./633445777. ; a86:real=545815736./2771057229. ; a87:real= -180193667./1043307555. ; a91:real=39632708./573591083. ; a94:real= -433636366./683701615. ; a95:real= -421739975./2616292301. ; a96:real=100302831./723423059. ; a97:real=790204164./839813087. ; a98:real=800635310./3783071287. ; a101:real=246121993./1340847787. ; a104:real= -37695042795./15268766246. ; a105:real= -309121744./1061227803. ; a106:real= -12992083./490766935. ; a107:real=6005943493./2108947869. ; a108:real=393006217./1396673457. ; a109:real=123872331./1001029789. ; a111:real= -1028468189./846180014. ; a114:real=8478235783./508512852. ; a115:real=1311729495./1432422823. ; a116:real= -10304129995./1701304382. ; a117:real= -48777925059./3047939560. ; a118:real=15336726248./1032824649. ; a119:real= -45442868181./3398467696. ; a1110:real=3065993473./597172653. ; a121:real=185892177./718116043. ; a124:real= -3185094517./667107341. ; a125:real= -477755414./1098053517. ; a126:real= -703635378./230739211. ; a127:real=5731566787./1027545527. ; a128:real=5232866602./850066563. ; a129:real= -4093664535./808688257. ; a1210:real=3962137247./1805957418. ; a1211:real=65686358./487910083. ; a131:real=403863854./491063109. ; a134:real= -5068492393./434740067. ; a135:real= -411421997./543043805. ; a136:real=652783627./914296604. ; a137:real=11173962825./925320556. ; a138:real= -13158990841./6184727034. ; a139:real=3936647629./1978049680. ; a1310:real= -160528059./685178525. ; a1311:real=248638103./1413531060. ; b1:real=14005451./335480064. ; b6:real= -59238493./1068277825. ; b7:real=181606767./758867731. ; b8:real=561292985./797845732. ; b9:real= -1041891430./1371343529. ; b10:real=760417239./1151165299. ; b11:real=118820643./751138087. ; b12:real= -528747749./2220607170. ; b13:real=1./4. ; bh1:real=13451932./455176623. ; bh6:real= -808719846./976000145. ; bh7:real=1757004468./5645159321. ; bh8:real=656045339./265891186. ; bh9:real= -3867574721./1518517206. ; bh10:real=465885868./322736535. ; bh11:real=53011238./667516719. ; bh12:real=2./45. ; var j,jj,ii,im,i,nstep,imi:integer; dp,x,xend,xold,eps,hmax,h,su,r1,ddp, t1,t9,t2,t8,a2,a8,r,mam, posneg,y11s,y12s,hnew,xph,err,denom,fac, tt,xx,a5,ami,amo,t5:real; k1,k2,k3,k4,k5,k6,k7,y1,y:array[1..9] of real; reject,quit:boolean; {fff:TextFile; } begin { Assignfile(fff,'sig.dat'); Rewrite(fff);} mam:=StrToFloat(Edit49.Text); if mam<=0.0 then mam:=1.0; agon:=StrToFloat(Edit9.Text); tt0:=StrToFloat(Edit10.Text); tt1:=StrToFloat(Edit31.Text); tt2:=StrToFloat(Edit42.Text); tt:=tt0+tt1+tt2; tauf:=StrToFloat(Edit46.Text); taus:=StrToFloat(Edit47.Text); dp:=StrToFloat(Edit11.Text); if tt<2.0 then dp:=dp*tt/2.0; if CheckBox1.Checked=false then begin if tt0<=2.0 then jj:=Trunc(tt0/(10.0*dp))+1 else jj:=Trunc((2.0/(10.0*dp))+((tt0-2.0)/(100.0*dp)))+1; if tt1>0.0 then if tt1<=6.0 then jj:=jj+Trunc(tt1/dp)+1 else jj:=jj+Trunc((6.0/dp)+((tt1-6.0)/(10.0*dp)))+1; if tt2>0.0 then jj:=jj+Trunc(tt2/(100.0*dp))+1; if jj<3 then jj:=3; end else jj:=Trunc(tt/(500.0*dp))+1; ProgressBar1.Min:=0; ProgressBar1.Max:=jj; ProgressBar1.Position:=0; k01:=StrToFloat(Edit1.Text); k10:=StrToFloat(Edit2.Text); k12:=StrToFloat(Edit3.Text); k21:=StrToFloat(Edit4.Text); k23:=StrToFloat(Edit12.Text); k32:=StrToFloat(Edit17.Text); k34:=StrToFloat(Edit5.Text); k43:=StrToFloat(Edit6.Text); k87:=StrToFloat(Edit26.Text); k78:=StrToFloat(Edit27.Text); k76:=StrToFloat(Edit28.Text); k67:=StrToFloat(Edit29.Text); k65:=StrToFloat(Edit19.Text); k56:=StrToFloat(Edit20.Text); k08:=StrToFloat(Edit33.Text); k80:=StrToFloat(Edit39.Text); k96:=StrToFloat(Edit38.Text); k69:=StrToFloat(Edit22.Text); k29:=StrToFloat(Edit21.Text); k92:=StrToFloat(Edit41.Text); k45:=StrToFloat(Edit7.Text); k54:=StrToFloat(Edit8.Text); rr[0]:=StrToFloat(Edit13.Text); ar[0]:=StrToFloat(Edit14.Text); a2r[0]:=StrToFloat(Edit15.Text); a3r[0]:=StrToFloat(Edit30.Text); a3ro[0]:=StrToFloat(Edit16.Text); a2ro[0]:=StrToFloat(Edit45.Text); a3d[0]:=StrToFloat(Edit23.Text); a2d[0]:=StrToFloat(Edit36.Text); ad[0]:=StrToFloat(Edit35.Text); d[0]:=StrToFloat(Edit34.Text); tx[0]:=0.0; su:=rr[0]+ar[0]+a2r[0]+a3r[0]+a3ro[0]+a2ro[0]+a3d[0]+a2d[0]+ad[0]+d[0]; if (su>1.001) OR (su<0.999) then begin rr[0]:=rr[0]/su; ar[0]:=ar[0]/su; a2r[0]:=a2r[0]/su; a3ro[0]:=a3ro[0]/su; a2ro[0]:=a2ro[0]/su; d[0]:=d[0]/su; ad[0]:=ad[0]/su; a2d[0]:=a2d[0]/su; a3d[0]:=a3d[0]/su; a3r[0]:=a3r[0]/su; end; xend:=tt; eps:=0.05; h:=0.0001; hmax:=0.5*dp; y[1]:=ar[0]; y[2]:=a2r[0]; y[3]:=a3r[0]; y[4]:=a3ro[0]; y[5]:=a3d[0]; y[6]:=a2d[0]; y[7]:=ad[0]; y[8]:=d[0]; y[9]:=a2ro[0]; jj:=0; x:=0.0; xold:=x; {begin of Runge-Kutta calc} quit:=false; posneg:=Sign(xend-x); hmax:=abs(hmax); h:=min(max(1.0e-10,abs(h)),hmax); h:=h*posneg; reject:=false; nstep:=0; {naccpt:=0; nreject:=0; nfcn:=0;} su:=rr[0]+ar[0]+a2r[0]+a3r[0]; Series1.AddXY(x,su,'',clred); Series2.AddXY(x,a3ro[0],'',clblue); Series3.AddXY(x,a2ro[0],'',cllime); su:=a2ro[0]+a3ro[0]; Series4.AddXY(x,su,'',clfuchsia); su:=d[0]+ad[0]+a2d[0]+a3d[0]; Series5.AddXY(x,su,'',clblack); if CheckBox1.Checked=false then if x>tt0 then ag:=vspl(x,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; ag:=ag*0.8/agon; Series6.AddXY(x,ag,'',clyellow); Series7.AddXY(x,0.5,'',clwhite); { writeln(fff,j:5,jj:8,y[3]:8:5);} { Basic Integration Step } 1: if {quit or} (nstep>nmax) or ((x+0.03*h)=x) then goto 79; if (x-xend)*posneg>0 then goto 79; { !!!!!!!!!!! } if (x+h-xend)*posneg>0 then h:=xend-x; if CheckBox1.Checked=false then if x>tt0 then ag:=vspl(x,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; r:=1.0-y[1]-y[2]-y[3]-y[4]-y[5]-y[6]-y[7]-y[8]-y[9]; k1[1]:=so1(r,y[1],y[2]); k1[2]:=so2(y[1],y[2],y[3],y[9]); k1[3]:=so3(y[2],y[3],y[4]); k1[4]:=so4(y[3],y[4],y[5]); k1[9]:=so9(y[2],y[6],y[9]); k1[5]:=so5(y[4],y[5],y[6]); k1[6]:=so6(y[5],y[6],y[7],y[9]); k1[7]:=so7(y[6],y[7],y[8]); k1[8]:=so8(r,y[7],y[8]); 2: { inc(nstep);} { the First 9 stages } for i:=1 to 9 do y1[i]:=y[i]+h*a21*k1[i]; r:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; k2[1]:=so1(r,y1[1],y1[2]); k2[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k2[3]:=so3(y1[2],y1[3],y1[4]); k2[4]:=so4(y1[3],y1[4],y1[5]); k2[9]:=so9(y1[2],y1[6],y1[9]); k2[5]:=so5(y1[4],y1[5],y1[6]); k2[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k2[7]:=so7(y1[6],y1[7],y1[8]); k2[8]:=so8(r,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a31*k1[i]+a32*k2[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c3*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k3[1]:=so1(r1,y1[1],y1[2]); k3[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k3[3]:=so3(y1[2],y1[3],y1[4]); k3[4]:=so4(y1[3],y1[4],y1[5]); k3[9]:=so9(y1[2],y1[6],y1[9]); k3[5]:=so5(y1[4],y1[5],y1[6]); k3[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k3[7]:=so7(y1[6],y1[7],y1[8]); k3[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a41*k1[i]+a43*k3[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c4*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k4[1]:=so1(r1,y1[1],y1[2]); k4[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k4[3]:=so3(y1[2],y1[3],y1[4]); k4[4]:=so4(y1[3],y1[4],y1[5]); k4[9]:=so9(y1[2],y1[6],y1[9]); k4[5]:=so5(y1[4],y1[5],y1[6]); k4[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k4[7]:=so7(y1[6],y1[7],y1[8]); k4[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a51*k1[i]+a53*k3[i]+a54*k4[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c5*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k5[1]:=so1(r1,y1[1],y1[2]); k5[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k5[3]:=so3(y1[2],y1[3],y1[4]); k5[4]:=so4(y1[3],y1[4],y1[5]); k5[9]:=so9(y1[2],y1[6],y1[9]); k5[5]:=so5(y1[4],y1[5],y1[6]); k5[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k5[7]:=so7(y1[6],y1[7],y1[8]); k5[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a61*k1[i]+a64*k4[i]+a65*k5[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c6*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k6[1]:=so1(r1,y1[1],y1[2]); k6[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k6[3]:=so3(y1[2],y1[3],y1[4]); k6[4]:=so4(y1[3],y1[4],y1[5]); k6[9]:=so9(y1[2],y1[6],y1[9]); k6[5]:=so5(y1[4],y1[5],y1[6]); k6[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k6[7]:=so7(y1[6],y1[7],y1[8]); k6[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a71*k1[i]+a74*k4[i]+a75*k5[i]+a76*k6[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c7*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k7[1]:=so1(r1,y1[1],y1[2]); k7[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k7[3]:=so3(y1[2],y1[3],y1[4]); k7[4]:=so4(y1[3],y1[4],y1[5]); k7[9]:=so9(y1[2],y1[6],y1[9]); k7[5]:=so5(y1[4],y1[5],y1[6]); k7[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k7[7]:=so7(y1[6],y1[7],y1[8]); k7[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a81*k1[i]+a84*k4[i]+a85*k5[i]+a86*k6[i]+a87*k7[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c8*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k2[1]:=so1(r1,y1[1],y1[2]); k2[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k2[3]:=so3(y1[2],y1[3],y1[4]); k2[4]:=so4(y1[3],y1[4],y1[5]); k2[9]:=so9(y1[2],y1[6],y1[9]); k2[5]:=so5(y1[4],y1[5],y1[6]); k2[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k2[7]:=so7(y1[6],y1[7],y1[8]); k2[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a91*k1[i]+a94*k4[i]+a95*k5[i]+a96*k6[i]+a97*k7[i]+a98*k2[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c9*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k3[1]:=so1(r1,y1[1],y1[2]); k3[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k3[3]:=so3(y1[2],y1[3],y1[4]); k3[4]:=so4(y1[3],y1[4],y1[5]); k3[9]:=so9(y1[2],y1[6],y1[9]); k3[5]:=so5(y1[4],y1[5],y1[6]); k3[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k3[7]:=so7(y1[6],y1[7],y1[8]); k3[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(a101*k1[i]+a104*k4[i]+a105*k5[i]+a106*k6[i]+a107*k7[i]+a108*k2[i]+a109*k3[i]); { Compute Imtermeniate Sums To Save Memory } for i:=1 to 9 do begin y11s:=a111*k1[i]+a114*k4[i]+a115*k5[i]+a116*k6[i]+a117*k7[i]+a118*k2[i]+a119*k3[i]; y12s:=a121*k1[i]+a124*k4[i]+a125*k5[i]+a126*k6[i]+a127*k7[i]+a128*k2[i]+a129*k3[i]; k4[i]:=a131*k1[i]+a134*k4[i]+a135*k5[i]+a136*k6[i]+a137*k7[i]+a138*k2[i]+a139*k3[i]; k5[i]:=b1*k1[i]+b6*k6[i]+b7*k7[i]+b8*k2[i]+b9*k3[i]; k6[i]:=bh1*k1[i]+bh6*k6[i]+bh7*k7[i]+bh8*k2[i]+bh9*k3[i]; k2[i]:=y11s; k3[i]:=y12s; end; { The Last 4 stages } r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c10*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k7[1]:=so1(r1,y1[1],y1[2]); k7[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k7[3]:=so3(y1[2],y1[3],y1[4]); k7[4]:=so4(y1[3],y1[4],y1[5]); k7[9]:=so9(y1[2],y1[6],y1[9]); k7[5]:=so5(y1[4],y1[5],y1[6]); k7[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k7[7]:=so7(y1[6],y1[7],y1[8]); k7[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(k2[i]+a1110*k7[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=x+c11*h; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k2[1]:=so1(r1,y1[1],y1[2]); k2[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k2[3]:=so3(y1[2],y1[3],y1[4]); k2[4]:=so4(y1[3],y1[4],y1[5]); k2[9]:=so9(y1[2],y1[6],y1[9]); k2[5]:=so5(y1[4],y1[5],y1[6]); k2[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k2[7]:=so7(y1[6],y1[7],y1[8]); k2[8]:=so8(r1,y1[7],y1[8]); xph:=x+h; for i:=1 to 9 do y1[i]:=y[i]+h*(k3[i]+a1210*k7[i]+a1211*k2[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; xx:=xph; if CheckBox1.Checked=false then if xx>tt0 then ag:=vspl(xx,tt0,tt1,agon) else ag:=0.0 else ag:=0.0; k3[1]:=so1(r1,y1[1],y1[2]); k3[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k3[3]:=so3(y1[2],y1[3],y1[4]); k3[4]:=so4(y1[3],y1[4],y1[5]); k3[9]:=so9(y1[2],y1[6],y1[9]); k3[5]:=so5(y1[4],y1[5],y1[6]); k3[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k3[7]:=so7(y1[6],y1[7],y1[8]); k3[8]:=so8(r1,y1[7],y1[8]); for i:=1 to 9 do y1[i]:=y[i]+h*(k4[i]+a1310*k7[i]+a1311*k2[i]); r1:=1.0-y1[1]-y1[2]-y1[3]-y1[4]-y1[5]-y1[6]-y1[7]-y1[8]-y1[9]; k4[1]:=so1(r1,y1[1],y1[2]); k4[2]:=so2(y1[1],y1[2],y1[3],y1[9]); k4[3]:=so3(y1[2],y1[3],y1[4]); k4[4]:=so4(y1[3],y1[4],y1[5]); k4[9]:=so9(y1[2],y1[6],y1[9]); k4[5]:=so5(y1[4],y1[5],y1[6]); k4[6]:=so6(y1[5],y1[6],y1[7],y1[9]); k4[7]:=so7(y1[6],y1[7],y1[8]); k4[8]:=so8(r1,y1[7],y1[8]); { nfcn:=nfcn+13;} for i:=1 to 9 do begin k5[i]:=y[i]+h*(k5[i]+b10*k7[i]+b11*k2[i]+b12*k3[i]+b13*k4[i]); k6[i]:=y[i]+h*(k6[i]+bh10*k7[i]+bh11*k2[i]+bh12*k3[i]); end; { Error estimation } Err:=0; for i:=1 to 9 do begin denom:=max(max(1e-6,abs(k5[i])),max(abs(y[i]),2.0*uround/eps)); err:=err+sqr((k5[i]-k6[i])/denom); end; err:=sqrt(err/(5.0)); { Computation HNEW } fac:=max((1.0/6.0),min(3.0,Power(err/eps,1.0/8.0)/0.9)); hnew:=h/fac; nstep:=nstep+1; if err>eps then goto 51; { Step is accepted } { inc(naccpt);} for i:=1 to 9 do y[i]:=k5[i]; yh[0]:=1.0-y[1]-y[2]-y[3]-y[4]-y[5]-y[6]-y[7]-y[8]-y[9]; for ii:=1 to 9 do yh[ii]:=y[ii]; x:=xph; if CheckBox1.Checked=true then ddp:=500.0*dp else if x<tt0 then if x<2.0 then ddp:=10.0*dp else ddp:=100.0*dp else if x<(tt0+tt1) then if x<(tt0+6.0) then ddp:=dp else ddp:=10.0*dp else if x<(tt0+6.0) then ddp:=dp else ddp:=100.0*dp; if (x-xold)>ddp then begin xold:=xold+ddp; jj:=jj+1; ProgressBar1.StepBy(1); tx[jj]:=x; ar[jj]:=y[1]; a2r[jj]:=y[2]; a3r[jj]:=y[3]; a3ro[jj]:=y[4]; rr[jj]:=yh[0]; a2ro[jj]:=y[9]; a3d[jj]:=y[5]; a2d[jj]:=y[6]; ad[jj]:=y[7]; d[jj]:=y[8]; end; if abs(hnew)>hmax then hnew:=posneg*hmax; if reject then hnew:=posneg*min(abs(hnew),abs(h)); reject:=false; h:=hnew; if (xend-x)<hnew then goto 79; goto 1; 51: reject:=true; h:=hnew; { if naccpt>=1 then inc(nreject);} { dec(nfcn);} if nstep<nmax then goto 2; 79: {end of Runge-Kutta calc} NJ:=jj; am:=-10.0; ta1:=-10.0; ta2:=-10.0; rt:=-10.0; for ii:=1 to jj do begin su:=rr[ii]+ar[ii]+a2r[ii]+a3r[ii]; Series1.AddXY(tx[ii],su,'',clred); Series2.AddXY(tx[ii],a3ro[ii],'',clblue); Series3.AddXY(tx[ii],a2ro[ii],'',cllime); su:=a2ro[ii]+a3ro[ii]; Series4.AddXY(tx[ii],su,'',clfuchsia); su:=d[ii]+ad[ii]+a2d[ii]+a3d[ii]; Series5.AddXY(tx[ii],su,'',clblack); if x>tt0 then ag:=vspl(tx[ii],tt0,tt1,agon) else ag:=0.0; ag:=ag*0.8/agon; Series6.AddXY(tx[ii],ag,'',clyellow); end; Series7.AddXY(tx[jj],0.5,'',clwhite); if CheckBox1.Checked=false then begin im:=0; imi:=jj-1; for ii:=1 to jj do begin su:=a2ro[ii]+a3ro[ii]; if su>am then begin am:=su; im:=ii; end; end; for ii:=2 to jj-1 do if (tx[ii-1]<(tt0+tt1)) AND (tx[ii+1]>(tt0+tt1)) then imi:=ii; ami:=a3ro[imi]+a2ro[imi]; amo:=am-ami; for ii:=2 to im-1 do if ((a3ro[ii-1]+a2ro[ii-1])<0.1*am) AND ((a3ro[ii+1]+a2ro[ii+1])>0.1*am) then t1:=tx[ii]; for ii:=2 to im-1 do if ((a3ro[ii-1]+a2ro[ii-1])<0.9*am) AND ((a3ro[ii+1]+a2ro[ii+1])>0.9*am) then t9:=tx[ii]; rt:=t9-t1; for ii:=im+1 to jj-1 do if ((a3ro[ii-1]+a2ro[ii-1]-ami)>0.8*amo) AND ((a3ro[ii+1]+a2ro[ii+1]-ami)<0.8*amo) then begin t2:=tx[ii]; a2:=a3ro[ii]+a2ro[ii]; end; if (t2<(tt0+tt1)) AND (a2>ami) AND (ami>0.0) then ta2:=(t2-tt0-tt1)/ln(ami/a2) else ta2:=-1.0; t5:=tt0+tt1; for ii:=im+1 to jj-1 do if ((a3ro[ii-2]+a2ro[ii-2])>0.5*am) AND ((a3ro[ii+2]+a2ro[ii+2])<0.5*am) then t5:=tx[ii]; if t5<(tt0+tt1) then ta1:=t5-tx[im] else ta1:=-1; end; Edit13.Text:=FloatToStrF(yh[0],ffFixed,7,4); Edit14.Text:=FloatToStrF(yh[1],ffFixed,7,4); Edit15.Text:=FloatToStrF(yh[2],ffFixed,7,4); Edit30.Text:=FloatToStrF(yh[3],ffFixed,7,4); Edit16.Text:=FloatToStrF(yh[4],ffFixed,7,4); Edit45.Text:=FloatToStrF(yh[9],ffFixed,7,4); Edit23.Text:=FloatToStrF(yh[5],ffFixed,7,4); Edit36.Text:=FloatToStrF(yh[6],ffFixed,7,4); Edit35.Text:=FloatToStrF(yh[7],ffFixed,7,4); Edit34.Text:=FloatToStrF(yh[8],ffFixed,7,4); Edit24.Text:=FloatToStrF(am,ffFixed,7,4); Edit50.Text:=FloatToStrF(100.0*am/mam,ffFixed,6,1); Edit25.Text:=FloatToStrF(ta1,ffFixed,7,4); Edit44.Text:=FloatToStrF(ta2,ffFixed,7,4); Edit32.Text:=FloatToStrF(rt,ffFixed,7,4); end; procedure TForm1.Button5Click(Sender: TObject); begin rish:=StrToFloat(Edit13.Text); arish:=StrToFloat(Edit14.Text); a2rish:=StrToFloat(Edit15.Text); a3rish:=StrToFloat(Edit30.Text); a3roish:=StrToFloat(Edit16.Text); a2roish:=StrToFloat(Edit45.Text); a3dish:=StrToFloat(Edit23.Text); a2dish:=StrToFloat(Edit36.Text); adish:=StrToFloat(Edit35.Text); dish:=StrToFloat(Edit34.Text); end; procedure TForm1.Button6Click(Sender: TObject); begin Edit13.Text:=FloatToStr(rish); Edit14.Text:=FloatToStr(arish); Edit15.Text:=FloatToStr(a2rish); Edit30.Text:=FloatToStr(a3rish); Edit16.Text:=FloatToStr(a3roish); Edit45.Text:=FloatToStr(a2roish); Edit23.Text:=FloatToStr(a3dish); Edit36.Text:=FloatToStr(a2dish); Edit35.Text:=FloatToStr(adish); Edit34.Text:=FloatToStr(dish); end; procedure TForm1.Button8Click(Sender: TObject); var foo:TextFile; pao:real; pmo,pjo,pko:integer; pps,ppsn:string; begin ForceCurrentDirectory:=True; SaveDialog1.FileName:=Edit48.Text; SaveDialog1.Filter:='Parameter files(*.tpt)|*.tpt'; if SaveDialog1.Execute then begin pps:=SaveDialog1.FileName; pko:=Length(pps); pmo:=1; for pjo:=1 to pko do if pps[pjo]='\' then pmo:=pjo; ppsn:=pps; Delete(ppsn,1,pmo); AssignFile(foo,pps); Rewrite(foo); pao:=StrToFloat(Edit1.Text); writeln(foo,pao); pao:=StrToFloat(Edit2.Text); writeln(foo,pao); pao:=StrToFloat(Edit3.Text); writeln(foo,pao); pao:=StrToFloat(Edit4.Text); writeln(foo,pao); pao:=StrToFloat(Edit12.Text); writeln(foo,pao); pao:=StrToFloat(Edit17.Text); writeln(foo,pao); pao:=StrToFloat(Edit5.Text); writeln(foo,pao); pao:=StrToFloat(Edit6.Text); writeln(foo,pao); pao:=StrToFloat(Edit7.Text); writeln(foo,pao); pao:=StrToFloat(Edit8.Text); writeln(foo,pao); pao:=StrToFloat(Edit26.Text); writeln(foo,pao); pao:=StrToFloat(Edit27.Text); writeln(foo,pao); pao:=StrToFloat(Edit28.Text); writeln(foo,pao); pao:=StrToFloat(Edit29.Text); writeln(foo,pao); pao:=StrToFloat(Edit19.Text); writeln(foo,pao); pao:=StrToFloat(Edit20.Text); writeln(foo,pao); pao:=StrToFloat(Edit33.Text); writeln(foo,pao); pao:=StrToFloat(Edit39.Text); writeln(foo,pao); pao:=StrToFloat(Edit38.Text); writeln(foo,pao); pao:=StrToFloat(Edit22.Text); writeln(foo,pao); pao:=StrToFloat(Edit21.Text); writeln(foo,pao); pao:=StrToFloat(Edit41.Text); writeln(foo,pao); pao:=StrToFloat(Edit9.Text); writeln(foo,pao); pao:=StrToFloat(Edit10.Text); writeln(foo,pao); pao:=StrToFloat(Edit31.Text); writeln(foo,pao); pao:=StrToFloat(Edit42.Text); writeln(foo,pao); pao:=StrToFloat(Edit46.Text); writeln(foo,pao); pao:=StrToFloat(Edit47.Text); writeln(foo,pao); Edit48.Text:=ppsn; CloseFile(foo); end; end; procedure TForm1.Button7Click(Sender: TObject); var fpp:TextFile; pkp,pmp,pjp:integer; ppr:real; psp,pspn:string; begin ForceCurrentDirectory:=True; OpenDialog1.DefaultExt:='tpt'; OpenDialog1.Filter:='Parameter files(*.tpt)|*.tpt'; if OpenDialog1.Execute then begin psp:=OpenDialog1.FileName; pkp:=Length(psp); pmp:=1; for pjp:=1 to pkp do if psp[pjp]='\' then pmp:=pjp; pspn:=psp; Delete(pspn,1,pmp); AssignFile(fpp,psp); Reset(fpp); readln(fpp,ppr); Edit1.Text:=FloatToStrF(ppr,ffFixed,9,2); readln(fpp,ppr); Edit2.Text:=FloatToStrF(ppr,ffFixed,5,2); readln(fpp,ppr); Edit3.Text:=FloatToStrF(ppr,ffFixed,9,2); readln(fpp,ppr); Edit4.Text:=FloatToStrF(ppr,ffFixed,5,2); readln(fpp,ppr); Edit12.Text:=FloatToStrF(ppr,ffFixed,9,2); readln(fpp,ppr); Edit17.Text:=FloatToStrF(ppr,ffFixed,5,2); readln(fpp,ppr); Edit5.Text:=FloatToStrF(ppr,ffFixed,6,2); readln(fpp,ppr); Edit6.Text:=FloatToStrF(ppr,ffFixed,6,2); readln(fpp,ppr); Edit7.Text:=FloatToStrF(ppr,ffFixed,8,3); readln(fpp,ppr); Edit8.Text:=FloatToStrF(ppr,ffFixed,8,5); readln(fpp,ppr); Edit26.Text:=FloatToStrF(ppr,ffFixed,6,2); readln(fpp,ppr); Edit27.Text:=FloatToStrF(ppr,ffFixed,7,3); readln(fpp,ppr); Edit28.Text:=FloatToStrF(ppr,ffFixed,6,2); readln(fpp,ppr); Edit29.Text:=FloatToStrF(ppr,ffFixed,7,3); readln(fpp,ppr); Edit19.Text:=FloatToStrF(ppr,ffFixed,6,2); readln(fpp,ppr); Edit20.Text:=FloatToStrF(ppr,ffFixed,7,3); readln(fpp,ppr); Edit33.Text:=FloatToStrF(ppr,ffFixed,7,5); readln(fpp,ppr); Edit39.Text:=FloatToStrF(ppr,ffFixed,7,3); readln(fpp,ppr); Edit38.Text:=FloatToStrF(ppr,ffFixed,8,3); readln(fpp,ppr); Edit22.Text:=FloatToStrF(ppr,ffFixed,8,5); readln(fpp,ppr); Edit21.Text:=FloatToStrF(ppr,ffFixed,7,2); readln(fpp,ppr); Edit41.Text:=FloatToStrF(ppr,ffFixed,7,2); readln(fpp,ppr); Edit9.Text:=FloatToStrF(ppr,ffFixed,9,7); readln(fpp,ppr); Edit10.Text:=FloatToStrF(ppr,ffFixed,7,2); readln(fpp,ppr); Edit31.Text:=FloatToStrF(ppr,ffFixed,7,2); readln(fpp,ppr); Edit42.Text:=FloatToStrF(ppr,ffFixed,7,2); readln(fpp,ppr); Edit46.Text:=FloatToStrF(ppr,ffFixed,8,4); readln(fpp,ppr); Edit47.Text:=FloatToStrF(ppr,ffFixed,8,4); Edit48.Text:=pspn; CloseFile(fpp); end; end; end.