Help! на большее фантазии не хватило

  • Автор темы Myc0n
  • Дата начала
M

Myc0n

#1
Нужно сделать так, чтобы если икс неравен нулю, то выполнялась операция 1 разделить на икс.
Пишу:
[codebox]if round(x)<>0 then
begin
y:=1/x;[/codebox]
Когда икс становится нулем, программа пишет, что деление на ноль запрещено.
Что не так?
Заранее спасибо :)
end;
end.
 
P

Poseidon

#2
А x какого типа? Учитывая, что используется round, могу предположить что real. Так вот такой код у меня работает:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
x, y: real;
begin
x:= 0;
if round(x)<>0 then
begin
y:=1/x;
end;
end;
А у Вас что?
 
M

Myc0n

#3
Вот весь код:
[codebox]var
Form1: TForm1;
x,y:real;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+1;
if x<>0 then
begin
y:=1/(x-40);
paintbox1.Canvas.Pixels[round(x),round(y)]:=clred;
end;
end;

end.[/codebox]
Вроде все как на ладони, а не получается. :)

Да, у меня тоже real, как видите
 
P

Poseidon

#4
Ну, вообще-то, исключение "Деление на 0" появится когда х = 40, поэтому проверка икса на ноль как бы бессмысленно. Нужно бы так:

Код:
var
Form1: TForm1;
x,y:real;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
x:=x+1;
if (x-40) <> 0 then // или if x <> 40 then
begin
y:=1/(x-40);
paintbox1.Canvas.Pixels[round(x),round(y)]:=clred;
end;
end;

end.
 
M

Myc0n

#5
Точно!!! Спасибо, добрый человек, ступил я немного!! :rolleyes: