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

Вниз

Invalid floating point operation. Не могу разобраться   Найти похожие ветки 

 
adav   (2002-05-15 11:28) [0]

Периодически возникает ошибка "invalid floating point operation". Подозрение на то, что программа криво работает с динамическими массивами.
Есть примерно следующее:

var
Form1: TForm1;
rr:array of real; //вначале объявляем одномерный массив
implementation
...

procedure TForm1.Button2Click(Sender: TObject);
begin
...
rr:=nil; //обнуляем его
setlength (rr, m); //присваиваем ему размерность m
...


Причем ошибка то вываливается, то нет. Проект работает только если запускать из Delphi. Отдельно exe-шник не хочет вообще работать, сразу вываливая данную ошибку. Разгребаю второй день, помогите пожалуйста, если знаете!

Заранее спасибо!


 
Внук ©   (2002-05-15 11:39) [1]

Нет здесь проблемы, а что дальше происходит с rr ?


 
Paxer   (2002-05-15 11:46) [2]

Проверь, не выходишь ли где либо за пределы массива, обращение по rr[Length(rr)] - ошибочно. Также нельзя обращаться по вычисленным адресам массива, т.к. Addr(rr) и Addr(rr[0]) - разные вещи. После обращений по таким адресам, как я понимаю, затирается информация о размере массива и происходит еще неизвестно что.


 
adav   (2002-05-15 12:23) [3]

2 Внук:
Иногда вылетает ошибка на это:

rr[i]:=sqrt(rr[i]);

Иногда на другие операции с массивами. Но проблема в том, что отладчик (view CPU) показывает именно процедуру DynArrayClear(?).

2 Paxer:
"обращение по rr[Length(rr)] - ошибочно". Это понятно, да и выдавал бы он тогда что-то вроде "index out of bounds" или вроде того.
Главное, что иногда проходит все прилично, а повторный раз (еще одно нажатие на кнопку и пересчет параметров) не хочет работать. Только если делфу остановить и заново запустить. А сам exe-файл без среды делфи вообще сразу ругается.



 
Paxer   (2002-05-15 12:39) [4]

<<да и выдавал бы он тогда что-то вроде "index out of bounds" - ничего Делфи не выдаст, прочитай раздел в Хелпе. Проверь,не используешь ли этот массив в качестве буфера при считывании или записи данных (из потока, из файла), если да - то это и есть ошибка. Я с этим про.. больше недели. Если можешь, ответь на мой вопрос в форуме по TAction.



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
1-88537
S@shka
2002-05-15 22:01
2002.05.27
Опять про DLL Delphi для C++ Builder


7-88644
samos
2002-02-27 11:22
2002.05.27
Реестр или rundll32


1-88454
still_swamp
2002-05-14 17:20
2002.05.27
Как сделать список форм в SDI


14-88623
Демон
2002-04-19 19:27
2002.05.27
Тут мой вопросик не пробегал?


1-88522
antonyo
2002-05-15 11:55
2002.05.27
Нужны помощники новичку