Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Invalid Floating Point ERROR

-=[ 13 октября 2004 г. # среда # 21:16:32 # GMT+0200 ]=-
Hi!

unit MathUnit;

interface
Procedure GetNOP(x0,xEnd,dx:extended);
Procedure incVertHorDimMatLine;
Procedure FillLine;
Procedure incVertHorDimMatdS_FilldS;
Procedure AnalysedS_incVertDimMatiArr_FilliArr;
Procedure GetLastiArrPos;
Procedure EraseAllMatrix;

Function Func(x:extended):extended;

var
delx:extended;

delta:extended;
NOP:int64;

xEtemp,x0temp:extended;

NOS:int64;
NORS:int64;
NOC:int64;
j:int64;
iTemp:int64;

q,k,l:integer; //Counters
iArr:array of array of integer;

dS:array of array of extended;
Line:array of array of extended;

Solve:array of extended;

implementation
uses unit1,SysUtils;

Function Func(x:extended):extended;
Begin
Func:=5*sqr(x)+14*x-32;
End;//_

Procedure GetNOP(x0,xEnd,dx:extended);
Begin
NOP:=trunc((xEnd-x0)/dx); <- Потом сдесь и т.д.
xEtemp:=xEnd;
x0temp:=x0;
delx:=dx;
incVertHorDimMatLine;
End;//_

Procedure incVertHorDimMatLine;
Begin
inc(j);
SetLength(Line,j);
SetLength(Line[j-1],NOP);
FillLine;
End;//_

Procedure FillLine;
Begin
Line[j-1][0]:=x0temp;
Line[j-1][NOP-1]:=xEtemp;
For q:=1 to NOP-2 do
Line[j-1][q]:=Line[j-1][q-1]+delx;
incVertHorDimMatdS_FilldS;
End;//_

Procedure incVertHorDimMatdS_FilldS;
Begin
SetLength(dS,j);
SetLength(dS[j-1],NOP);
For q:=0 to NOP-1 do
dS[j-1][q]:=Func(Line[j-1][q]);
AnalysedS_incVertDimMatiArr_FilliArr;
End;//_

Procedure AnalysedS_incVertDimMatiArr_FilliArr;
Begin
For q:=0 to NOP-1 do
Begin//__
if ((dS[j-1][q]<delta)and(dS[j-1][q]>(-delta))) then
Begin//Solve[NOS]:=dS[j-1][q];inc(NOS);
if NOS=NORS then EXIT;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
End;//if ((dS[j-1][q]<0)and(dS[j-1][q+1]>0))or((dS[j-1][q]>0)and(dS[j-1][q+1]<0)) then
Begin//inc(NOC);
SetLength(iArr,j);
SetLength(iArr[j-1],NOC);
iArr[j-1][NOC-1]:=q;
End;//End;//__
GetLastiArrPos;
End;//_

Procedure GetLastiArrPos;
Begin
If {Length(iArr[j-1])}NOC=0 then EraseAllMatrix
else
Begin//__
iTemp:=iArr[j-1][NOC-1];
dec(NOC);
SetLength(iArr[j-1],NOC);
delx:=delx/NOP; <- Первая ошибка будет сдесь
GetNOP(Line[j-1][iTemp],Line[j-1][iTemp+1],delx);
End;//__
End;//_

Procedure EraseAllMatrix;
Begin
dec(j);
If j=0 then exit;
SetLength(Line,j);
SetLength(iArr,j);
SetLength(dS,j);
End;//_

end.

ВОт такая вот музыка... Как лечить сабевые ошибки??? Почему они там есть и т.д.

Для того чтобы все это работало нужно на форме сделать к примеру копку и назначить
на событие такую вот лабуду:

MathUnit.NORS:=2;
MathUnit.delta:=MathUnit.Func(MathUnit.delx);
SetLength(MathUnit.Solve,MathUnit.NORS);
MathUnit.GetNOP(-5,2,0.5);

Короче, помогите, чем можете.. Курсач летит :(

Ответить   -=[-B0(R)MaN-]=- Wed, 13 Oct 2004 22:27:27 +0300 (#244443)

 

Ответы:

Здоровеньки булы, -=[-B0\(R\)MaN-]=-!

14 октября 2004 г., четверг, 00:27:27 (GMT+05:00), пришел ко мне
почтальон Почкин и всучил письмо с пометкой "Invalid Floating Point ERROR",
в котором сообщалось следующее:

...

^^^ ^^^
У тебя индекс выходит за границы массива [q+1]

...

^^^^^^^
И здесь тоже индекс выходит за границы массива [iTemp+1]

Я исправил данные строки на

if ( (dS[j - 1][q - 1] < 0) and (dS[j - 1][q] > 0)) or ((dS[j - 1][q - 1] > 0)
and (dS[j - 1][q] < 0) ) then

и

GetNOP(Line[j - 1][iTemp - 1], Line[j - 1][iTemp], delx);

соответственно, прога сожрала всю память и выдала "Out of memory", но
subj-а больше не было.

Ответить   Томилов Александр Thu, 14 Oct 2004 19:12:49 +0500 (#244753)

 

-=[Дрова!]=-
14 октября 2004 г. /четверг 17:12:49/ Томилов |E-Mail: <mailto:astero***@p*****.ru>|
в мессаге <<Invalid Floating Point ERROR>> накрапал:

[B~E~G~I~N~>
Томилов> Здоровеньки булы, -=[-B0\(R\)MaN-]=-!
Томилов> 14 октября 2004 г., четверг, 00:27:27 (GMT+05:00), пришел ко мне
Томилов> почтальон Почкин и всучил письмо с пометкой "Invalid Floating Point
ERROR",
Томилов> в котором сообщалось следующее:

~~~< Message on address 0x00000000 cannot be read (written) >Томилов> GetNOP(Line[j - 1][iTemp - 1], Line[j - 1][iTemp], delx);
Томилов> соответственно, прога сожрала всю память и выдала "Out of memory",
но
Томилов> subj-а больше не было.
Томилов> --
Томилов> Если будешь есть пельмени - будешь вечно жить, как ЛЕНИН!!!

[E|.|N|.|D|.>
Вобщем, суть понял, но все равно куча сабжей вылетает :( Спасибо

Ответить   -=[-B0yMaN-]=- Thu, 14 Oct 2004 19:56:56 +0300 (#244850)