Делфи "invalid floating point operation" при нажатии на кнопку

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Pavel92
Сообщения: 2
Зарегистрирован: 27 дек 2012, 02:32

27 дек 2012, 02:56

type
massiv1=array[1..4] of extended;
massiv2=array[1..5] of extended;
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Edit4: TEdit;
Label4: TLabel;
Edit5: TEdit;
Label5: TLabel;
Memo1: TMemo;
Series2: TLineSeries;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
n:integer;
i:integer;
implementation

{$R *.dfm}
procedure dwig(n:integer; t1:real; var x,x1:massiv1);
var k1,t,md,rsh,f,m,a1:real;
begin
t1:=0;
k1:=0;
a1:=0.2;
md:=275;
m:=3800;

begin
if t1<5 then k1:=1.5
else k1:=3;
F:=2407+1.05*k1*a1+0.0084*x1[3]*x1[3];
x1[1]:=x[2];
x1[2]:=(md/730-F)/m;
x1[3]:=sqrt(((-1)*F-2407-1.05*k1*a1)/0.0084*a1);
end;
end;
procedure RKS(n:integer; var h,t1,th:extended; var y,yh,z,d:massiv1; a:massiv2);
var j,i:integer;
begin
n:=3;
th:=t1;
for i:=1 to n do
begin
yh:=y;
d:=y
end;
for j := 1 to 4 do
begin
dwig(n,th,d,z);
th:=t1+a[j];
for I := 1 to n do
begin
yh:=yh+a[j+1]*z/3;
d:=y+a[j]*z
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t1,th,h :extended;
a:massiv2;
x1,x,xh,z,d : massiv1;
begin
h:=0.01; //шаг
a[1]:=h/2;
a[2]:=a[1];
a[5]:=a[1];
a[3]:=h;
a[4]:=h;
x[1]:=0; //начальное условие
x[2]:=1.9; //начальное условие
x[3]:=0; //начальное условие
x[4]:=0; //начальное условие
t1:=0; //начальное условие
while t1<=10 do
begin
RKS(n,h,t1,th,x,xh,z,d,a);
t1:=th;
for i:=1 to n do
series1.addxy(t1, x1[3]);
Memo1.Lines.Add(FloatToStr(x1[3]));
series2.addxy(t1, x[2]);
Memo2.Lines.Add(FloatToStr(x[2]));
for i:=1 to n do
x[i]:=xh[i];

end;
end;
end.
Ответить