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

Тема в разделе "Delphi - Компоненты", создана пользователем Myc0n, 18 фев 2009.

  1. Myc0n

    Myc0n Гость

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

    Poseidon Гость

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

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

    Myc0n Гость

    Вот весь код:
    [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, как видите
     
  4. Poseidon

    Poseidon Гость

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

    Код (Text):
    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.
     
  5. Myc0n

    Myc0n Гость

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

Поделиться этой страницей