Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Invalid floating point operation [D7, WinXP]


Страницы:   1 2

Pul ©   (2004-08-10 15:44:00) 

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


GrayFace   (2004-08-11 15:08:00) [1]

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


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


> 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 не входит.
Как это можно объяснить, как только не проблемы со стеком или глюк.
Если проблемы со стеком, посоветуйте как искать подобную ошибку


Fay   (2004-08-11 05:43:00) [3]

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


Alx2   (2004-08-11 05:34:00) [4]

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


Fay   (2004-08-11 05:28:00) [5]

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


Sergey Kaminski   (2004-08-11 02:44:00) [6]

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


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

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

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

Глюки?


Anatoly Podgoretsky   (2004-08-10 17:53:00) [8]

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


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


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

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


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

  Result := a;


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

if result>1 then result:=1;

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


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

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


Pul   (2004-08-10 17:17:00) [12]


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

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

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

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


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


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


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

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


ALS   (2004-08-10 16:53:00) [14]

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


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


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

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


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


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

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


Ega23   (2004-08-10 16:08:00) [17]

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


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


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

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


Ega23   (2004-08-10 15:58:00) [19]

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

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


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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо