Problem z kompilacja

0

Od dość niedawna zacząłem uczyć sie programowania. Za soba mam juz pare programow (dzialajacych :)) i teraz zabralem sie za kalkulator. W tej chwili ma 4 opcje (dodawanie, odejmowanie, dzielenie i mnozenie) i chcialem uniemozliwic dzielenie przez 0. Zrobilem to tak (to oczywiscie jedna procedurka):

var
  Wynik : real;
begin
  Arg2 := StrToFloat(Wyswietlacz.Text);
  case Operator of                       { w zależności od wybranego operatora }
    '+' : Wynik := Arg1 + Arg2;          { wykonaj odpowiednie działanie }
    '-' : Wynik := Arg1 - Arg2;
    '*' : Wynik := Arg1 * Arg2;
    '/' : Wynik := Arg1 / Arg2;
    if Arg2 <> 0 then
    begin
     Wynik := Arg1 / Arg2;
    end
    else
    begin
     Wyswietlacz.text := 'Nie mozna dzielic';
     end;
  Wyswietlacz.Text := FloatToStr(Wynik); { i wyświetl wynik }
  Wyswietlacz.SetFocus;
end;
end;

To jest procedura po kliknieciu =
Kompilator nie chce mi tego skompilowac! Pod linijka

Wynik := Arg1 / Arg2;

w miejscu end powinna byc jakas stala! Cos jest zle?! Jak przegladalem inne programy z zastosowaniem petli warunkowej to tam jest zrobione to podobnie.
Prosz o pomoc!!

0

Nie wiem czy chodzi oto ale Arg2 musi być zmięnną typu Extended

0

Masz błąd w bloku case.

var
 Wynik : real;
begin
 Arg2 := StrToFloat(Wyswietlacz.Text);
 case Operator of            { w zależności od wybranego operatora }
  '+' : Wynik := Arg1 + Arg2;     { wykonaj odpowiednie działanie }
  '-' : Wynik := Arg1 - Arg2;
  '*' : Wynik := Arg1 * Arg2;
  '/' : if Arg2 <> 0 then Wynik := Arg1 / Arg2 else Wynik := 0;
 end;
 Wyswietlacz.Text := FloatToStr(Wynik); { i wyświetl wynik }
 Wyswietlacz.SetFocus;
end;
end;
0

Dzieki teraz dziala, a jak zrobic zeby w momencie dzielenia przez 0 pojawil sie komunikat?

0
var
 Wynik : real;
begin
 Arg2 := StrToFloat(Wyswietlacz.Text);
 case Operator of            { w zależności od wybranego operatora }
  '+' : Wynik := Arg1 + Arg2;     { wykonaj odpowiednie działanie }
  '-' : Wynik := Arg1 - Arg2;
  '*' : Wynik := Arg1 * Arg2;
  '/' : if Arg2 <> 0 then Wynik := Arg1 / Arg2 else  showmessage('Nie dziel przez 0');
 end;
 Wyswietlacz.Text := FloatToStr(Wynik); { i wyświetl wynik }
 Wyswietlacz.SetFocus;
end;
end;

//dopisane
NIE ZAUWAZYLEM ELSE WYNIK:=0; TERAZ DZIALA;

0

To nic nie daje... :|

1 użytkowników online, w tym zalogowanych: 0, gości: 1