((2*n-1)*(2*m-1)*
((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+
(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2)))*
(2*l3/3.14)*(2*l3/3.14)))*
(1-(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z))+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*(l3-z)))/
(exp(sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)+(-sqrt(((2*n-1)*(2*n-1)*(3.14/(2*l1))*(3.14/(2*l1))+(2*m-1)*(2*m-1)*(3.14/(2*l2))*(3.14/(2*l2))))*l3)));;;:=t1*t2+ts;:=trunc(t*1000)/1000;.Caption:=floattostr(t);.Caption:=floattostr(trunc(ts*1000)/1000);;;;TForm1.FormShow(Sender: TObject);
begin('Для вызова помощи в программе, нажмите F1 или правую кнопку мыши');
// Переключение на русскую раскладку клавиатуры
LoadKeyboardLayout('00000419',KLF_ACTIVATE);
end;TForm1.N1Click(Sender: TObject);
// вызов справки.Show;;TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
// разрешение ввода только цифрnot (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);
// разрешение ввода только цифр и знака «-»
if not (key in ['0'..'9', ',','-',
#8]) then:=#0;;;.
Приложение
2
unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)
….BitBtn1Click(Sender: TObject);Edit4Change(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);
{ Private declarations }
{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,maximal,ALx,ALy,ALz,tc,P,m: real;,Ez,px,py,Bx,By,Bz,KSIy,KSIz: real;: integer;UPlot, UCoord, Unit2;
begin
// проверка првильности ввода координат точек
if (strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*
(1-(exp(px*x/lx)+exp(-px*x/lx))/
(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*
(1-(exp(py*y/ly)+exp(-py*y/ly))/
(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');
FPlot.Show;.LX.Caption:='X';;;;TForm1.Edit4Change(Sender: TObject);(Edit1.text<>'') and (Edit2.text<>'') and (Edit3.text<>'') and (Edit4.text<>'') then.Caption:=floattostr(round(strtofloat(Edit4.Text)/(strtofloat(Edit1.Text)*strtofloat(Edit2.Text)*strtofloat(Edit3.Text))*1000)/1000);;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*
(1-(exp(px*x/lx)+exp(-px*x/lx))/
(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*
(1-(exp(py*y/ly)+exp(-py*y/ly))/
(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');
FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or
(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*
(1-(exp(px*x/lx)+exp(-px*x/lx))/
(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*
(1-(exp(py*y/ly)+exp(-py*y/ly))/
(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');
FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or
(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=(strtofloat(Edit4.text))/(8*lx*ly*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=sqrt((Ez*Ez/(Ey*Ey))*Bz/(1+0.5*Bz));:=(py*py*(exp(py)-exp(-py))/(exp(py)+exp(-py)))/(py-(exp(py)-exp(-py))/(exp(py)+exp(-py)));:=1/(1+By/m);:=1/(1+Bz/3);:=sqrt(Ey*Ey*By*KSIy+Ez*Ez*Bz*KSIz);:=0;:=W*lx*lx/(2*Ez*Ez*LAx)*
(1-(exp(px*x/lx)+exp(-px*x/lx))/
(exp(px)+exp(-px)+(px/Bx)*(exp(px)-exp(-px))))*
(1-(exp(py*y/ly)+exp(-py*y/ly))/
(exp(py)+exp(-py)+(py/By)*(exp(py)-exp(-py))))*
(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);
begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');
LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender:
TObject; var Key: Char);not (key in ['0'..'9', ',', #8]) then:=#0;;;TForm1.Edit10KeyPress(Sender:
TObject; var Key: Char);not (key in ['0'..'9', ',','-', #8]) then:=#0;;;.
Приложение
3
unit Unit1;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, Buttons, TeEngine, Series, ExtCtrls, TeeProcs, Chart,, ImgList, ActnList, Menus, ComCtrls, ToolWin, jpeg;= class(TForm)
….BitBtn1Click(Sender: TObject);BitBtn2Click(Sender: TObject);BitBtn3Click(Sender: TObject);BitBtn4Click(Sender: TObject);N1Click(Sender: TObject);FormShow(Sender: TObject);Edit1KeyPress(Sender: TObject; var Key: Char);Edit10KeyPress(Sender: TObject; var Key: Char);
{ Private declarations }
{ Public declarations };: TForm1;,W,lz,ly,lx,LAx,LAy,LAz,x,y,z,h,ALx,ALy,ALz,tc,P,k: real;,Ez,g1,g2,Bx,By,Bz,KSIx,KSIz: real;: integer;UPlot, UCoord, Unit2;
{$R *.DFM}TForm1.BitBtn1Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=-lx;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lx/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*
(exp(g1*y/ly)+exp(-g1*y/ly))/
(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*
(1-(exp(g2*x/lx)+exp(-g2*x/lx))/
(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(x,t,clRed);:=x+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты X');
FPlot.Show;.LX.Caption:='X';;;;TForm1.BitBtn2Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit6.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit8.text);:=-ly;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*ly/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*
(exp(g1*y/ly)+exp(-g1*y/ly))/
(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*
(1-(exp(g2*x/lx)+exp(-g2*x/lx))/
(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(y,t,clRed);:=y+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Y');
FPlot.Show;.LX.Caption:='Y';;;;TForm1.BitBtn3Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit6.text='') or (Edit9.text='')(Edit10.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) or
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz);:=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit7.text);:=strtofloat(Edit6.text);:=-lz;:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));.BeginPlot;:=2*lz/1000;i:=1 to 1000 do:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*
(exp(g1*y/ly)+exp(-g1*y/ly))/
(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*
(1-(exp(g2*x/lx)+exp(-g2*x/lx))/
(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*
(1+2/Bz-z*z/(lz*lz))+tc;.AddPoint(z,t,clRed);:=z+h;;.Chart1.Title.Text.Clear;
FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');
FPlot.Show;.LX.Caption:='Z';;;;TForm1.BitBtn4Click(Sender: TObject);(Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')(Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')(Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')(Edit14.text='') then('Заполните все поля формы')(strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or
(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or
(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then
ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')
else:=strtofloat(Edit1.text)/2;:=strtofloat(Edit2.text)/2;:=strtofloat(Edit3.text)/2;:=strtofloat(Edit4.text);:=strtofloat(Edit4.text)/(4*lx*lz); :=strtofloat(Edit5.text);:=strtofloat(Edit11.text);:=strtofloat(Edit12.text);:=strtofloat(Edit9.text);:=strtofloat(Edit13.text);:=strtofloat(Edit14.text);:=strtofloat(Edit10.text);:=strtofloat(Edit6.text);:=strtofloat(Edit7.text);:=strtofloat(Edit8.text);:=(lx/lz)*sqrt(LAz/LAx);:=(lx/ly)*sqrt(LAy/LAx);:=ALx*lx/LAx;:=ALy*ly/LAy;:=ALz*lz/LAz;:=1/(1+Bz/3);:=Bz*Ez*Ez*KSIz;:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));:=1/(1+By/k);:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));:=0;:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*
(exp(g1*y/ly)+exp(-g1*y/ly))/
(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*
(1-(exp(g2*x/lx)+exp(-g2*x/lx))/
(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*
(1+2/Bz-z*z/(lz*lz))+tc;:=trunc(t*1000)/1000;.Caption:=floattostr(t);;;;TForm1.N1Click(Sender: TObject);.Show;;TForm1.FormShow(Sender: TObject);
begin('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');
LoadKeyboardLayout('00000419',KLF_ACTIVATE);;TForm1.Edit1KeyPress(Sender:
TObject; var Key: Char);not (key in ['0'..'9',',', #8])
then:=#0;;;TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);not (key in
['0'..'9',',','-', #8]) then:=#0;;;.
Приложение
4
unit UPlot;, Messages, SysUtils, Classes, Graphics, Controls, Forms,, ImgList, ActnList, Menus, ComCtrls, ToolWin, TeEngine, Series,, TeeProcs, Chart;= class(TForm)ACursMouseExecute(Sender: TObject);Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);Chart1DblClick(Sender: TObject);FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);Chart1AfterDraw(Sender: TObject);ARepaintExecute(Sender: TObject);AMaxExecute(Sender: TObject);AMinExecute(Sender: TObject);FormKeyUp(Sender: TObject; var Key: Word;: TShiftState);ACalcExecute(Sender: TObject);ASaveBMPExecute(Sender: TObject);ASaveWMFExecute(Sender: TObject);ASaveEMFExecute(Sender: TObject);ACopyBMPExecute(Sender: TObject);ACopyWMFExecute(Sender: TObject);ACopyEMFExecute(Sender: TObject);APrintPExecute(Sender: TObject);AExitExecute(Sender: TObject);ACursorsExecute(Sender: TObject);AHelpExecute(Sender: TObject);FCoordClose;FormClose(Sender: TObject; var Action: TCloseAction);FormCreate(Sender: TObject);
{ Private declarations }
// Прорисовка изображений курсоров графикаSetCursor;
// Запись координат курсоров в окно FCoord
procedure WriteValue;
{ Public declarations }BeginPlot;AddPoint(X,Y:real;Color:TColor);NullPoint(X:real);;: TFPlot;UCoord, Math, ShellAPI;
{$R *.DFM}
// IndCurs1 - индекс первого курсора
// IndCurs2 - индекс второго курсора
// HCursor - шаг перемещения курсора
var IndCurs1, IndCurs2, HCursor: LongInt;
ABad: array of real; // Массив областей недопустимых значений
Bad: boolean;TFPlot.BeginPlot;
begin
// Очистка серии прежнего графика.Clear;
// Обнуление массива недопустимых значений аргумента(ABad,0);
// Сброс флага, сообщающего о том,
// что предыдущее значение аргумента недопустимое:= false;
// Чтобы восстановить масштаб, если он перед этим изменялся
FPlot.Chart1.UndoZoom;;TFPlot.AddPoint(X,Y:real;Color:TColor);
begin
// Занесение очередной точки в график
if(FloatToStr(Y) = 'NAN')or
(FloatToStr(Y) = '-NAN')or
(FloatToStr(Y) = 'INF')or
(FloatToStr(Y) = '-INF')NullPoint(X)begin.AddXY(X,Y,'',Color);
// Сброс флага, сообщающего о том,
// что предыдущее значение аргумента недопустимое:= false;
end; ;TFPlot.NullPoint(X:real);
begin
// Если вычисление точки дало ошибкуBad
// Если прошлая точка тоже была недопустимой
then ABad[High(ABad)] := Xbegin
// Если прошлая точка была допустимой,
// то значение аргумента заносится как начальная и
// конечная точка очередного диапазона(ABad,Length(ABad)+2);
ABad[High(ABad)-1] := X;[High(ABad)] := X;
// Установка флага, сообщающего о том,
// что предыдущее значение аргумента недопустимое:= true;
end;;TFPlot.ACursMouseExecute(Sender: TObject);
// Включение/выключение курсора мыши.Checked:= not ACursMouse.Checked;ACursMouse.Checkedbegin.Cursor := crCross;.Visible := true;begin.Cursor := crDefault;(not ACursors.Checked)FCoord.Visible := falsebegin.XLabel.Caption := '';.YLabel.Caption := '';;;TFPlot.ACursorsExecute(Sender: TObject);
// Включение/выключение курсоров графика.Checked:= not ACursors.Checked;ACursors.Checkedbegin.ImageIndex:=4;:=0;:=0;;;.Visible := true;
SetFocus; // Переключение фокуса на данную форму
endbegin.ImageIndex:=3;;(not ACursMouse.Checked)FCoord.Visible := falsebeginFCoord do begin.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';.Caption := '';;;;;TFPlot.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
// Отображение координат курсора мыши
var XData, YData: double;(Series1.Cursor = crCross) then begin.GetCursorValues(XData, YData);FCoord do begin.Caption := FloatToStrF(XData,ffGeneral,7,0);.Caption := FloatToStrF(YData,ffGeneral,7,0);;;;TFPlot.SetCursor;
// Поиск координат и прорисовка курсоров графика
var XPos, YPos, Pos: LongInt;: TPenMode;Chart1 do begin:= Canvas.Pen.Mode;.Pen.Color:=clBlack;.Pen.Mode := pmNotXor;:=Series1.CalcXPos(IndCurs1);:=Series1.CalcYPos(IndCurs1);.MoveTo(XPos,ChartRect.Bottom);.LineTo(XPos, ChartRect.Top);.MoveTo(ChartRect.Left, YPos);.LineTo(ChartRect.Right, YPos);:=Series1.CalcXPos(IndCurs2);(Pos <> XPos) then begin.MoveTo(Pos,ChartRect.Bottom);.LineTo(Pos, ChartRect.Top);;:=Series1.CalcYPos(IndCurs2);(Pos <> YPos) then begin.MoveTo(ChartRect.Left, Pos);.LineTo(ChartRect.Right, Pos);;.Pen.Mode := PenMode;;;TFPlot.WriteValue;
begin:=Series1.XValue[IndCurs1];:=Series1.XValue[IndCurs2];:=Series1.YValue[IndCurs1];:=Series1.YValue[IndCurs2];FCoord do begin.Caption := FloatToStrF(X1,ffGeneral,7,0);.Caption := FloatToStrF(Y1,ffGeneral,7,0);.Caption := FloatToStrF(X2,ffGeneral,7,0);.Caption := FloatToStrF(Y2,ffGeneral,7,0);.Caption := FloatToStrF(X1-X2,ffGeneral,7,0);.Caption := FloatToStrF(Y1-Y2,ffGeneral,7,0);;;TFPlot.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
// В режиме отображения курсоров графика перемещает курсоры
var IndNew:LongInt;(ACursors.Checked) then begin(ssShift in Shift)IndNew:=IndCurs2IndNew:=IndCurs1;Key of_Left: Dec(IndNew, HCursor);_Right: Inc(IndNew, HCursor);_Home: IndNew:=0;_End: IndNew:= Series1.Count-1;
else exit;;
// Ограничение перемещения курсора
if (IndNew < 0) then IndNew := 0;(IndNew > Series1.Count-1) then IndNew := Series1.Count-1;
// Ускорение перемещения курсора(HCursor);
SetCursor; // Стирание прежнего курсора(ssShift in Shift)IndCurs2:=IndNewIndCurs1:=IndNew;; // Рисование нового курсора;;;TFPlot.Chart1AfterDraw(Sender: TObject);
// При перерисовке изображения прорисовывает курсоры
// отображает области недопустимых значений
var i: integer;, X2 :longint;(ACursors.Checked) then SetCursor;(Length(ABad) > 0)begin.Chart1.Canvas.Brush.Color := clSilver;.Chart1.Canvas.Pen.Color := clBlack;.Chart1.Canvas.Brush.Style := bsSolid;:=0;:= FPlot.Series1.CalcXPosValue(Max(ABad[i],FPlot.Series1.MinXValue));:= FPlot.Series1.CalcXPosValue(Min(ABad[i+1],FPlot.Series1.MaxXValue));
if(X1 = X2) then begin
// Раздвигаются границы области, если они совпадают
Dec(X1,2);(X2,2);;.Chart1.Canvas.Rectangle(X1,.Chart1.ChartRect.Top,,.Chart1.ChartRect.Bottom);(i,2);(i >= Length(ABad));;;TFPlot.FCoordClose;
// Выключение курсоров.Checked := false;(ACursors.Checked) then begin;.Checked := false;.ImageIndex:=3;;;TFPlot.ARepaintExecute(Sender: TObject);
// Перерисовка изображения.Repaint;;TFPlot.AMaxExecute(Sender: TObject);
// Установка курсора на максимумi: integer;: double;
// Стирание прежнего курсора
if ACursors.Checked then SetCursor;:= -1.7E308;i:=0 to Series1.LastValueIndex do(Series1.YValues[i] > YMax)begin:= Series1.YValues[i];:= i;;:= 0;;;.Visible := true;.Checked := true;.ImageIndex:=4;;;TFPlot.AMinExecute(Sender: TObject);
// Установка курсора на минимумi: integer;: double;