'Division by zero'是怎么回事?

babey13 2004-06-07 11:27:10
相关代码
void __fastcall TForm1::UpdatePic()
{

byte red,blue,green;
byte tr;
byte BW;
int x,y;
int r;
TMyColor c,c1,c2;
Graphics::TBitmap *b=new Graphics::TBitmap();
b->PixelFormat=pf24bit;
b->Width=sb->Width;
b->Height=sb->Height;
b->Canvas->Draw(0,0,sb);

red=fmSetup->TrackBar1->Position;
green=fmSetup->TrackBar2->Position;
blue=fmSetup->TrackBar3->Position;
tr=fmSetup->TrackBar4->Position;
BW=fmSetup->TrackBar5->Position;

for(x=0;x<sf->Width;x++)
for(y=0;y<sf->Height;y++)
{
r=BW;
if(x<r) r=x;
if(y<r) r=y;
if((sf->Width-x)<r) r=sf->Width-x;
if((sf->Height-y)<r) r=sf->Height-y;
c=GetSourcePixel(x+Posx,y+Posy,sb);
c1=GetSourcePixel(x,y,sf);
c1.Blue=(c.Blue*tr+c1.Blue*(100-tr)*blue/255)/100;
c1.Green=(c.Green*tr+c1.Green*(100-tr)*green/255)/100;
c1.Red=(c.Red*tr+c1.Red*(100-tr)*red/255)/100;

c2.Blue= (c.Blue*(BW-r)+r*c1.Blue)/BW ;
c2.Green= (c.Green*(BW-r)+r*c1.Green)/BW ;
c2.Red= (c.Red*(BW-r)+r*c1.Red)/BW ;
if((y+Posy)>=0 && (y+Posy)<b->Height && (x+Posx)>=0 && (x+Posx)<b->Width)
((TMyColor *)(b->ScanLine[y+Posy]))[x+Posx]=c2;
}
Image->Picture->Graphic=b;
b->Free();


运行的时候出现对话框:Debugger Exception Notification

project1.exe raised exception class EDivByZero with message 'Division by zero',Process stopped.Use step or Run to continue.

这是怎么回事呢?俺是新人,在网上下载的代码可以直接运行,可是自己又做了一遍就是这个结果,不知道怎么回事,请大虾们帮帮忙,谢谢拉
...全文
3415 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Taiji02 2004-06-09
  • 打赏
  • 举报
回复
可能是BW的初始值为0:
BW=fmSetup->TrackBar5->Position;

c2.Blue= (c.Blue*(BW-r)+r*c1.Blue)/BW ;
c2.Green= (c.Green*(BW-r)+r*c1.Green)/BW ;
c2.Red= (c.Red*(BW-r)+r*c1.Red)/BW ;
pepepig 2004-06-09
  • 打赏
  • 举报
回复
你在哪下的代码,看到好几个人问了,这分挣的好几遍了。把网址写下来再结贴,ok?
pepepig 2004-06-09
  • 打赏
  • 举报
回复
就是fmSetup->TrackBar5->Position = 0是发生的错误。
可以fmSetup->TrackBar5->Min =1;//大于0的值即可;
也可以点击TrackBar控件,按F11,在name属性上方的Min属性里写入大于0的数值。
fmSetup->TrackBar5->Min 大于0,就不会有fmSetup->TrackBar5->Position = 0的情况。
HalfWorm 2004-06-08
  • 打赏
  • 举报
回复
除零了
hailin10 2004-06-08
  • 打赏
  • 举报
回复
0作为分母了,单步调试一下把。
CWYCN 2004-06-08
  • 打赏
  • 举报
回复
程序中有将0作为除数的操作,DEBUG吧
bocwg 2004-06-08
  • 打赏
  • 举报
回复
跟踪一下,看在那调语句发生错误。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧