Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Incompatible type


Автор: microo10 15.2.2012, 11:37
Код

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
Proc,L:Integer;
A,B:Double;
begin
  A:= 2000;
  B:=100;
  Proc:= B * 100 / A;
  L:= Image1.Height * Proc / 100;
  Pos := L;
  Draw;
end;

Ругается на:
Код

[DCC Error] Unit1.pas(60): E2010 Incompatible types: 'Integer' and 'Extended'
[DCC Error] Unit1.pas(61): E2010 Incompatible types: 'Integer' and 'Extended'

Скажите в чем проблема? Мне нужно что бы конечная переменная Pos была integer smile 
 smile 

Автор: Данкинг 15.2.2012, 11:44
Нужно - округляй до целого.

Автор: superVad 15.2.2012, 11:45
microo10, В какой строке ошибка?
Подозреваю, что в 9. Round и Trunc в помощь.

Автор: northener 15.2.2012, 11:45
Цитата(microo10 @  15.2.2012,  11:37 Найти цитируемый пост)
Мне нужно что бы конечная переменная Pos была integer 

Выбирай:
MyPos:=Trunc(...);
MyPos:=Round(...);

Автор: microo10 15.2.2012, 11:53
Спасибо огромное,оперативно помогли!!!)))

Автор: БелАмор 15.2.2012, 14:12
Странно, что никто не вспомнил про целочисленное деление div
В таких случаях (вычисление координат) его применение максимально логично, только следует помнить, что, чтобы не увеличивать погрешность, сначала следует умножать, а уже потом делить.

Автор: northener 15.2.2012, 14:28
Цитата(БелАмор @  15.2.2012,  14:12 Найти цитируемый пост)
Странно, что никто не вспомнил про целочисленное деление div

Это годилось бы только в конкретном случае - одна операция умножения и одна операция деления. В более сложных вычислениях погрешность бы накапливалась. 

Автор: БелАмор 15.2.2012, 15:33
Цитата(northener @  15.2.2012,  14:28 Найти цитируемый пост)
Это годилось бы только в конкретном случае - одна операция умножения и одна операция деления. В более сложных вычислениях погрешность бы накапливалась. 

Я не случайно сделал оговорку о конкретной задаче: "вычисление координат". Для этого обычно хватает div. Координаты изначально имеют целочисленную природу и я не вижу смысла без необходимости переходить на вычисления с плавающей точкой, а потом заниматься округлением.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)