Тема: Чому при діленні вибиває помилку?

Помилку вибиває в рядку t1:=s1/v1;


procedure TForm1.ToCalculate;                                                // Процедура обчислити
var
  t1, t2, t3, t4, t5, t6 : extended;
  v1, v2, v3, v4, v5, v6 : extended;
  s1, s2, s3, s4, s5, s6 : extended;

begin
  RichEdit1.Lines.Add('------------');                                       // До тексту в полі RichEdit1 додається напис ----------
  RichEdit1.Lines.Add('Розв''язання');                                       // До тексту в полі RichEdit1 додається напис Розв'язання

  if ComboBox1.ItemIndex = 0 then
    if ComboBox9.ItemIndex = 6 then
      if ComboBox10.ItemIndex = 12 then
      begin
        t1:=s1/v1;
        RichEdit1.Lines.Add ('Визначаємо час руху');
        RichEdit1.Lines.Add ('t1:=s1/v1');
        RichEdit1.Lines.Add ('Швидкість руху тіла  — це фізична величина, яка показує, яку відстань проходить тіло за одиницю часу в напрямі руху.');
        RichEdit1.Lines.Add ('Механічним рухом називають зміну з часом положення тіла в просторі відносно інших тіл.');
        RichEdit1.Lines.Add(FloatToStr(t1) + 'Секунд');
      end;
      if ComboBox5.ItemIndex = 1 then
        begin
        t1:=t1*60;
        RichEdit1.Lines.Add(ComboBox1.Text + '  ' + FloatToStr(t1) + ComboBox5.Text);
        end
      else
        begin
        if ComboBox5.ItemIndex = 2 then
        t1:=t1*3600;
        RichEdit1.Lines.Add(ComboBox1.Text + '  ' + FloatToStr(t1) + ComboBox5.Text);
        end;

end;

2

Re: Чому при діленні вибиває помилку?

Вангую, що v1 = 0 в той момент, шукайте де ви його присвоюєте.
Також на майбутне, глобальні змінні то поганий тон.

Перепрошую, ви об'являєте в тілі функції змінні, але значення їм не присвоюєте. Тому і помилка.
Слід додати чому дорівню

v1 := 90;

і так далі.

3

Re: Чому при діленні вибиває помилку?

Chemist-i написав:

Вангую, що v1 = 0 в той момент, шукайте де ви його присвоюєте.
Також на майбутне, глобальні змінні то поганий тон.

Перепрошую, ви об'являєте в тілі функції змінні, але значення їм не присвоюєте. Тому і помилка.
Слід додати чому дорівню

v1 := 90;

і так далі.

В мене в попередній процедурі тим змінним присвоєне значення.
Множенння робить правильно!!!! Без помилок.
Я думаю що я щось пишу неправильно в розділі оголошень, але ніяк в інтернеті та книгах не можу знайти як правильно записувати тип Extended.
Буду далі шукати. Дякую за відповідь.

4

Re: Чому при діленні вибиває помилку?

все змінні які ви об'явили в середині функції створюються наново під час роботи функції і після її завершення видаляються.

Подякували: Torbins1