powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Invalid floating point operation
5 сообщений из 5, страница 1 из 1
Invalid floating point operation
    #39613077
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.
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
Invalid floating point operation
    #39613082
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй подумать, что выполняется в первом операторе TForm1.Button1Click и чему там может быть равно значение. А для особо тугодумных компилятор выдает подсказки, которые хорошо бы почитать.
...
Рейтинг: 0 / 0
Invalid floating point operation
    #39613083
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Invalid floating point operation
    #39613086
пре-под
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Invalid floating point operation
    #39613181
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не хватает проверки переменной Gmax на 0:

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


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