Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.034 c
1-1092297320
AlexFe
2004-08-12 11:55
2004.08.29
Изменение размера ComboBox


1-1092142343
Ш-К
2004-08-10 16:52
2004.08.29
Connection points


4-1089638473
lion
2004-07-12 17:21
2004.08.29
Windows xp


6-1088354563
rolex
2004-06-27 20:42
2004.08.29
При отправке e-mail (TidSMTP) программа "подвисает".


1-1092292319
Fynjy
2004-08-12 10:31
2004.08.29
Фокус





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский