Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Invalid floating point operation / 5 сообщений из 5, страница 1 из 1
11.03.2018, 21:20
    #39613077
Divino
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Invalid floating point operation
Всем привет, помогите плиз разобраться с ошибкой. Программистом не являюсь, поэтому не судите строго)) нужно для сдачи в универе.

Программа запускается, но после запуска расчёта вылазит ошибка.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Button1: TButton;
    Edit5: TEdit;
    Label5: TLabel;
    Button2: TButton;
    Button3: TButton;
    Edit6: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
Qk,Qnom,Qpk,Gmin,N: real;
Gmax,R,Rp,Rrez:real;
begin

Gmax:=Qk+1.1*Qnom+Qpk ;
R:=1.2*Gmax*9.81 ;

  begin
if R<1 then  Edit6.Text:='Условие удержания кабины на направляющих не выполнено'
  else  Rp:=0.14*N*4
  end;
begin
Rrez:=Rp/Gmax/9.81;

if Rp/Gmax/9.81>1 then Edit6.Text:='Тормозное усилие обеспечено с коэффициентом запаса'+FloatToStr(Rrez)
  else Edit6.Text:='Тормозное усилие не обеспечено, коэффициент запаса'+FloatToStr(Rrez);
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1. Clear;
Edit2. Clear;
Edit3. Clear;
Edit4. Clear;
Edit5. Clear;
Edit6. Clear;
end;

end.

...
Рейтинг: 0 / 0
11.03.2018, 21:50
    #39613082
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Invalid floating point operation
Попробуй подумать, что выполняется в первом операторе TForm1.Button1Click и чему там может быть равно значение. А для особо тугодумных компилятор выдает подсказки, которые хорошо бы почитать.
...
Рейтинг: 0 / 0
11.03.2018, 21:53
    #39613083
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Invalid floating point operation
Divino, у тебя неинициализированные локальные переменные, например Qk (и прочие):

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TForm1.Button1Click(Sender: TObject);
var
Qk,Qnom,Qpk,Gmin,N: real;
Gmax,R,Rp,Rrez:real;
begin

Gmax:=Qk+1.1*Qnom+Qpk ;
R:=1.2*Gmax*9.81 ;

  begin
if R<1 then  Edit6.Text:='Условие удержания кабины на направляющих не выполнено'
  else  Rp:=0.14*N*4
  end;
begin
Rrez:=Rp/Gmax/9.81;


Читай ворнинги, короче.
...
Рейтинг: 0 / 0
11.03.2018, 22:07
    #39613086
пре-под
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Invalid floating point operation
Divino, на
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
procedure TForm1.Button1Click(Sender: TObject);
var
 Qk,Qnom,Qpk,Gmin,N: real;
 Gmax,R,Rp,Rrez:real;
begin

 Qk   := StrToFloatDef(Edit1.Text, -0.1);
 Qnom := StrToFloatDef(Edit2.Text, -0.2);
 Qpk  := StrToFloatDef(Edit3.Text, -0.3);
 Gmin := StrToFloatDef(Edit4.Text, -0.4);
 N    := StrToFloatDef(Edit5.Text, -0.5);

 Gmax:=Qk+1.1*Qnom+Qpk ;
 R:=1.2*Gmax*9.81 ;

 if R<1 then
  begin
   Edit6.Text:='Условие удержания кабины на направляющих не выполнено'
  end
 else
  begin
   Rp:=0.14*N*4
  end;

 Rrez:=Rp/Gmax/9.81;
 if Rp/Gmax/9.81>1 then
  begin
   Edit6.Text:='Тормозное усилие обеспечено с коэффициентом запаса '+FloatToStr(Rrez)
  end
 else
  begin
   Edit6.Text:='Тормозное усилие не обеспечено, коэффициент запаса '+FloatToStr(Rrez);
  end;

end;

иди здавай!
...
Рейтинг: 0 / 0
12.03.2018, 07:40
    #39613181
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Invalid floating point operation
не хватает проверки переменной Gmax на 0:

Rrez:=Rp/Gmax/9.81
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Invalid floating point operation / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]