超级郁闷的问题 要死人了 ( 积分: 100 )

  • 主题发起人 主题发起人 genglimin
  • 开始时间 开始时间
G

genglimin

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序里 有类似这样一段
var
a,b:double;
c:integer;
begin
c := round(a/b);
end
当a=5690,b=570的时候 ,得到c=1082249213
怎么试都是这样,郁闷死
 
哪有呀?
是你的程序哪儿写的有问题吧.或者不家其它改变变量C的地方吧.
这一段程序没问题呀
round(5690/570)=10
5690/570=9.98
没问题的.
 
这段程序单独拿出来没问题 ,但是在我那个整个程序中就有问题
中间肯定没有改变变量的地方,实在查不出问题在哪里
感觉是delphi读取内存混乱了
哪位高人知道怎么解决
 
你应该拿出更多的代码,才能分析错误呀,把你的代码多复制一些吧.
 
是不是你其它地方也定义着A,B,C三个变量呀,如果定义了其它的全局变量,将有可能导致此处不正确
 
你的begin end 中间肯定还有代码吧,肯定是全局变量的问题
 
round(5690/570)=10
5690/570=9.98
没问题的.

var
a,b:double;
c:integer;
begin
c := round(a/b);
end
有问题,出在数据类型上。
 
谢谢大家,代码大致是这样的


type
TSpace = class(TObject)
public
Sl,Sw,Sh :double;
SFlag : boolean;
SDirect:string;
public function xUnitSpace(Sp1:TSpace;Sp2:TSpace):TSpace;
public function yUnitSpace(Sp1:TSpace;Sp2:TSpace):TSpace;
public function zUnitSpace(Sp1:TSpace;Sp2:TSpace):TSpace;

end;


type
Tgoodsinfo = class(TObject)
public
gtype:string;
id:string;
name:string;

len:double;
wid:double;
hei:double;
weight:double;

end;




function TForm1.isLS(ExitGoods:Tgoodsinfo;currSpace:TSpace):bool;
var
lengthB,widthB,heightB,j:integer;

begin
lengthB := round(currSpace.SL / ExitGoods.len) ;
widthB := round(currSpace.Sw / ExitGoods.wid) ;
heightB := round(currSpace.Sh / ExitGoods.hei) ;

......................
end;

出问题的是 lengthB := round(currSpace.SL / ExitGoods.len) 这句
这两句都是正常的
widthB := round(currSpace.Sw / ExitGoods.wid) ;
heightB := round(currSpace.Sh / ExitGoods.hei) ;
 
断住跟踪一下!
 
跟踪一下 currSpace.SL 与 ExitGoods.len 的值 。可能会随时间的变化而变化。
 
delphi群:23981160,爱好d的都来
 
可以肯定的是:是你自己的代码的问题。
我最近因为一个变量没有初始化的问题把我害惨了,我以后只怀疑自己。

建议:
如果不好找出别处是否修改了某个属性,那么不妨把这个属性的读写隔一层函数,也就是说,把:
public
a:integer;
end;
变成:
public
a:integer read getA write setA;
end;
这样在setA里设断点更容易一些
 
var
nTestSL, nTestLen: Double;
LengthB : integer;
begin
nTestSL := currSpace.SL;
nTestLen := ExitGoods.len;
showmessage('nTestSl=' + FloatToStr(nTestSL) +
' nTestLen=' + FloatToStr(nTestLen));
if nTestLen <> 0 then
LengthB := Round(nTestSL/nTestLen);
end;
 
后退
顶部