Форум: "Основная";
Текущий архив: 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.032 c