Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Invalid floating point operation   Найти похожие ветки 

 
Pul   (2004-08-10 15:44) [0]

Есть функция, работает нормально и правильно.
После декларации новой локальной переменной начинает вылетать с подобной ошибкой. С чем это может быть связано?


 
Sandman25 ©   (2004-08-10 15:44) [1]

C ошибкой в программе. Где-то ведется некорректная работа с памятью.


 
Ega23 ©   (2004-08-10 15:44) [2]

Функцию в студию!


 
Smithson ©   (2004-08-10 15:45) [3]

с переполнением стека
с неверной работой с указателями
с операцией с исчезающе малым числом (меньше машинной дельты или сопоставимым с ней)
с делением на ноль (не уверен)


 
Ega23 ©   (2004-08-10 15:47) [4]

У меня чаще всего такое вылетает, когда FloatToStr от какой-нибудь фигни берёшь.


 
Pul   (2004-08-10 15:49) [5]

>> Ega23 ©   (10.08.04 15:44) [2]
Функция довольно большая с математическими вычислениями.
Разбираться в ней я думаю ни у кого желания не возникнет.
Могу просто уточнить.
В ней достаточно много локальных переменных.
Как бы я эту новую переменную не называл, ошибка от этого не пропадает.
К тому же возникает она не при работе с этой переменной, а просто после ее декларации.


 
Ega23 ©   (2004-08-10 15:53) [6]

Pul   (10.08.04 15:49) [5]

Давай выкладывай, а также строчку, на которой вылетает


 
Pul   (2004-08-10 15:55) [7]

>> Ega23 ©   (10.08.04 15:53) [6]
Около 100 килобайт исходника?


 
Ega23 ©   (2004-08-10 15:58) [8]

Около 100 килобайт исходника?

ОДНА ФУНКЦИЯ??????????


 
Pul   (2004-08-10 16:06) [9]


> Ega23 ©   (10.08.04 15:58) [8]
> Около 100 килобайт исходника?
>
> ОДНА ФУНКЦИЯ??????????

Нет, не одна, просто все остальные вызываются из нее, а суммарно это примерно 100 кило


 
Ega23 ©   (2004-08-10 16:08) [10]

F7 пользоваться умеешь?  :о)


 
Pul   (2004-08-10 16:36) [11]


> Ega23 ©   (10.08.04 16:08) [10]
> F7 пользоваться умеешь?  :о)

думаешь поможет?
я в исходник добавляю всего лишь декларацию переменной
и при чем здесь F7?
может я просто не догоняю, объясни.


 
Рамиль ©   (2004-08-10 16:45) [12]


> думаешь поможет?
> я в исходник добавляю всего лишь декларацию переменной

Найди на какой строчке ошибка возникает.


 
ALS ©   (2004-08-10 16:53) [13]

Добавление декларации локальной переменной изменяет распределение памяти в стеке процедуры.
Включи:
Project-Options-Compiler-Range checking
Project-Options-Compiler-Warnings
Не должно быть непроинициализированных переменных


 
Pul   (2004-08-10 17:11) [14]


> Рамиль ©   (10.08.04 16:45) [12]


> Найди на какой строчке ошибка возникает.

Ты будешь смеяться
  if result>1 then result:=1;
на этой строке останавливается выполнение с указанной выше ошибкой


 
Pul   (2004-08-10 17:17) [15]


> ALS ©   (10.08.04 16:53) [13]

Range checking и Overflow checking включены

> Не должно быть непроинициализированных переменных

Я же уже в [5] указал, что
ошибка возникает не при работе с этой переменной, а просто после ее декларации.


 
Андрей Сенченко ©   (2004-08-10 17:22) [16]

А при этой самой редекларации Ты случаем не перекрываешь имен глобальных переменных ?


 
Ega23 ©   (2004-08-10 17:23) [17]

if result>1 then result:=1;

Предыдущая строчка какая?


 
Pul   (2004-08-10 17:48) [18]


> Андрей Сенченко ©   (10.08.04 17:22) [16]

Нет, не перекрываю


> Ega23 ©   (10.08.04 17:23) [17]

  Result := a;


 
Anatoly Podgoretsky ©   (2004-08-10 17:53) [19]

Кривые эксперты/компоненты


 
Pul   (2004-08-10 18:58) [20]

Вот это прикол
поставил вызов одной функции в
try
 ...
except
 raise exception.Create("...");
end;

и exception вообще не вылетает.

Глюки?


 
Sergey Kaminski ©   (2004-08-11 02:44) [21]

Найден еще один ГЛЮК как таковой.
Без кода,без доказательств без ничего вообще. Т.е., глюк как таковой, глюк в себе.


 
Fay ©   (2004-08-11 05:28) [22]

покажи объявление функции и секцию VAR


 
Alx2 ©   (2004-08-11 05:34) [23]

Скорее всего, стэк битый. Надо смотреть кто его грохает.


 
Fay ©   (2004-08-11 05:43) [24]

Вот и мне так кажется 8)


 
Pul   (2004-08-11 12:07) [25]


> Sergey Kaminski ©   (11.08.04 02:44) [21]

Тебе выложить 100 килобайт исходника, это можно, так ты же сам меня и пошлешь. А в предыдущем посте уже было сказано, что проблема решена. Остался только открытым вопрос о ее причинах.
Большинство в этой ветке стараются помочь, за что им огромное спасибо, а ты только время отнимаешь.

> Fay ©   (11.08.04 05:28) [22]


type
 TMatrix = array of Extended;
 TXMatrix = array of TMatrix;
 TRealArray = array of Extended;
 TCol = record
 ...
 // много полей, поэтому не привожу
 ...
 end
 TCols = array of TCol;

procedure Discrim(AY: TCol; AVars: TCols);
var
 SumW,DetB,DetSigmaWTMP,MaxGk,E,SumE,TmpE,SumResProc,STmp,STmp2,DetL,DetU,SumL,SumC: Extended;
 i,j,k,ID,ID1,ID2,m,KK: Integer;
 Groups,SumWk,Means,WilksL,F,Sig,Pk,BConst,PredictGr1,PredictGr2,P1,P2,PGkXTmp,SMove,CConst,PerVar,CumVar,CanCorVar,CanWi lksL,CanChi2,CanSig: TRealArray;
 GrMeans,SigmaW,SigmaWTMP,SigmaB,B,Tmp,Tmp2,Chi2,Gk,PGkX,ClassRes,ClassResProc,S_W,R,RR,L,U,A,G,LM,V,C,D,S,StructR: TMatrix;
 Sigma,SigmaTmp1,SigmaTmp2: TXMatrix;
 IsFirst: Boolean;
begin
...
 try
   Func1(...);
 except
   raise;
 end;
end;

ексепшн вылетал в функции Func1
а после того, как поставил try .. except .. end - даже в секцию except не входит.
Как это можно объяснить, как только не проблемы со стеком или глюк.
Если проблемы со стеком, посоветуйте как искать подобную ошибку


 
GrayFace ©   (2004-08-11 15:08) [26]

В функции асм есть?
Ты выложи только эту функцию.
Наверняка, проблемы со стеком. Вместо TRealArray сделай array of real - ИМХО, в этом дело.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.051 c
4-1089931040
sashapont
2004-07-16 02:37
2004.08.29
Добавление пункта в стартовое меня


1-1092135915
ilya@scsc.ru
2004-08-10 15:05
2004.08.29
Как игонорировать раскладку клавиатуры?


3-1091648519
gonta
2004-08-04 23:41
2004.08.29
Инсталяция компонентов ODAC


1-1092286606
Кириешки
2004-08-12 08:56
2004.08.29
Как остановить процедуру


4-1089376136
Дмитрий2004
2004-07-09 16:28
2004.08.29
Программа работающая под определенным пользователем