注册 登录
编程论坛 Delphi论坛

编译时出现的这个错误怎解决?

yalewang 发布于 2010-07-14 19:14, 637 次点击
这个错误怎解决?画图时转换坐标时产生的。
Operator not applicable to this operand type 这是错误提示
var
pts:array[1..100] of Tpoint;
shu[1..100] :array of double ;
maxvalue,minvalue:double ;
//////////////////////////////以上变量定义在implement前/////////
..............
i:integer;
begin
for i:=1 to 100 do
   begin
  ..........
   pts[i].Y:=form1.ClientHeight-((shu[i]-minvalue)*form1.ClientHeight div (maxvalue-minvalue));//////////这行错误
  ............
 end;
6 回复
#2
东海一鱼2010-07-15 16:18
div 用于整数除法
浮点除法用 /
这是delphi比较独特的地方。
#3
yalewang2010-07-16 02:24
不行啊,鱼兄。
#4
东海一鱼2010-07-16 08:47
原因是这样:
form1.ClientHeight div (maxvalue-minvalue))改为form1.ClientHeight / (maxvalue-minvalue))这里编译已经通过了。
可是你的整句:
pts[i].Y:=form1.ClientHeight-((shu[i]-minvalue)*form1.ClientHeight / (maxvalue-minvalue));是把一个浮点值赋给一个整形变量
(pts的成员类型为longint),所以必须转换类型。
如下:
pts[i].Y:= Round(form1.ClientHeight-((shu[i]-minvalue)*form1.ClientHeight / (maxvalue-minvalue)));

Round 四舍五入求整。
#5
yalewang2010-07-16 08:54
我试过round,也不行,将form1.clientheight直接换为500,也不行。
pts(i).y始终为0
#6
yalewang2010-07-16 09:16
我计算pts是想用Canvas.Polyline(pts)来画图。
坐标转换方法在VB中可以实现,DELPHI是不是像素点有特别的规定?
#7
东海一鱼2010-07-16 11:08
delphi的像素点没有什莫特别的,它的Canvas类只是简单对SDK DC的封装。
虽然可以,但不建议自己绘制这样的图像(又累又容易出错)。建议直接用TeeChart来显示。
delphi自带的差点,但也够你用了。要更专业的,可以到google上搜专业PJ版的。

BTW:
我晕,我只是讨论你的语法问题。好像跟你的值没什莫关系吧。
1