2016-03-11 6 views
-1

Я кодирую программу с Pascal в fastreport. Проблема возникает, когда я пытаюсь показать результат деления. это моя программа:Неверная операция с плавающей запятой Pascal

var 
relec_tp_for_pa, tp_for_pa, relec_tt_tp, total_tp, coef_relec : Real = 0; 
relec_vt : Integer = 0; 

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);    
begin 

if ((<EJobsQuery."SERV_ID"> = 54)) then   
    begin 
     relec_tp_for_pa := tp_for_pa;          
     relec_vt := relec_vt + <EJobsQuery."EJOB_VOLUME">;          
     relec_tt_tp := relec_tt_tp + tp; 
     total_tp := total_tp + tp; 
    end; 

coef_relec := StrToFloat(FormatFloat('0.0000', relec_tt_tp/total_tp)); 

relec_pa.Text := FormatFloat('0.00', relec_vt /(relec_tp_for_pa * coef_relec));     
relec_pr.Text := FloatToStr(relec_vt/relec_tt_tp);     

end; 

Оба этих подразделения:
-relec_vt/(relec_tp_for_pa * coef_relec)
-relec_vt/relec_tt_tp
дает мне ошибку: недопустимая операция с плавающей точкой

I Кодирование в отчете FastReport 4.11.4. до 32 бит ОС, если это может помочь.

Еще раз спасибо.

+0

Ваши переменные неинициализированы. Что вы ожидаете? Не делай этого. – gnasher729

+0

@ gnasher729 В моей программе все переменные инициализированы, так что это не проблема, спасибо –

+0

Ok @RyanVincent Я попробую это решение –

ответ

4

Из того, что вы закодировали, кажется, что вы делите на ноль!

-relec_vt/(relec_tp_for_pa * coef_relec)

-relec_vt/relec_tt_tp

С

relec_tp_for_pa := tp_for_pa 

это определенно ZERO!

relec_tp_for_pa * coef_relec 

Будет также нулевым!

Для releasec_tt_tp Я просто могу попытаться угадать, так как этот код - не полный пример.

total_tp := total_tp + tp 

total_tp равен нулю, а если ф также обнулить Вы бы в конечном итоге в делении на ноль.

Обычно я всегда проверяю, не делится ли ваш делитель!

+0

Спасибо @Alexander за ваш ответ. Я не думаю, что это проблема, потому что я проверил содержимое этих переменных, показывая их отдельно. –

+0

Хорошо, это код, который вы опубликовали. И в этом коде defc_tp_for_pa defenetly zero! –

Смежные вопросы