Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Invalid floating point operation


Автор: Lianamir 20.3.2008, 20:15
Код

  if x<1200  then
  Form1.Str.Cells[2,1]:='1200';
    if ((VisPomR>1200) and (VisPomR<2200)) then
 Form1.Str.Cells[2,1]:='2200';

    if ((VisPomR>2200) and (VisPomR<2700)) then
 Form1.Str.Cells[2,1]:='2700';

    if ((VisPomR>2700) and (VisPomR<3100)) then
 Form1.Str.Cells[2,1]:='3100';

    if ((VisPomR>3100) and (VisPomR<3500)) then
 Form1.Str.Cells[2,1]:='3500';

    if ((VisPomR>3500) and (VisPomR<4000)) then
 Form1.Str.Cells[2,1]:='4000';

    if ((VisPomR>4000) and (VisPomR<6200)) then
 Form1.Str.Cells[2,1]:='6200';


если х=2200 или 2700 или 3100 и т.д.  то вылезает ошибка   "Invalid floating point operation"

В других случаях все нормально  Подскажите что  это может быть?

Добавлено через 1 минуту и 46 секунд
Код

  if x<1200  then
  Form1.Str.Cells[2,1]:='1200';


    if ((x>1200) and (VisPomR<2200)) then
 Form1.Str.Cells[2,1]:='2200';

    if ((x>2200) and (VisPomR<2700)) then
 Form1.Str.Cells[2,1]:='2700';

    if ((x>2700) and (VisPomR<3100)) then
 Form1.Str.Cells[2,1]:='3100';

    if ((x>3100) and (VisPomR<3500)) then
 Form1.Str.Cells[2,1]:='3500';

    if ((x>3500) and (VisPomR<4000)) then
 Form1.Str.Cells[2,1]:='4000';

    if ((x>4000) and (VisPomR<6200)) then
 Form1.Str.Cells[2,1]:='6200';


Добавлено через 3 минуты и 34 секунды
Так нагляднее будет
и ещё-   x: integer;

Автор: Alix 20.3.2008, 20:20
ну ошибка похоже не здесь. И кстати, у Вас везде пропускаются сами граничные значения. Есть, например, <3500, есть >3500. Какой то из них должен стать <= или >= соответственно.

Автор: Lianamir 20.3.2008, 20:27
пробовала >=  ошибка остается

ввожу например 6200 и ошибка......исправляю на 6201  или  6199  то все нормально.
вычислений ни каких нет........

Добавлено через 44 секунды
сейчас попробую ещё раз...........

Добавлено через 7 минут и 20 секунд
похоже ошибка и правда не в этом

пробую так

Код

  if x<1200  then
  Form1.Str.Cells[2,1]:='1200';


    if ((x>1200) and (VisPomR<2199)) then
 Form1.Str.Cells[2,1]:='2199';

    if ((x>2199) and (VisPomR<2700)) then
 Form1.Str.Cells[2,1]:='2700';

    if ((x>2700) and (VisPomR<3100)) then
 Form1.Str.Cells[2,1]:='3100';

    if ((x>3100) and (VisPomR<3500)) then
 Form1.Str.Cells[2,1]:='3500';

    if ((x>3500) and (VisPomR<4000)) then
 Form1.Str.Cells[2,1]:='4000';

    if ((x>4000) and (VisPomR<6200)) then
 Form1.Str.Cells[2,1]:='6200';


ввожу 2200 и ошибка остается  smile

Добавлено через 8 минут и 9 секунд
ну почему протрамма прицепилась именно к этим числам??

Автор: ivan219 20.3.2008, 20:36
Цитата(Lianamir @  20.3.2008,  20:27 Найти цитируемый пост)
ввожу например 6200 и ошибка......исправляю на 6201  или  6199  то все нормально.

Скорей всего 6200 у тебя не обрабатывается Alix тебе правильно сказал замени все < или > на <= или >= и снова проверь, а в остальном приведёный табой код рабочий так что если нечего не выйдет выложи весь код!!!

Автор: Lianamir 20.3.2008, 20:42
Цитата

Скорей всего 6200 у тебя не обрабатывается Alix тебе правильно сказал


Все  правильно.   ура smile  получилось я заменила как вы сказали.

Спасибо!!!


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)