| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 756 人关注过本帖
标题:BCB中关于二进制加法的程序运行后发现的问题
取消只看楼主 加入收藏
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
结帖率:85.29%
收藏
已结贴  问题点数:15 回复次数:1 
BCB中关于二进制加法的程序运行后发现的问题
我用BCB写了一个计算器程序,其他进制运算都没有问题,唯独二进制加法运算,编译没有错误,但运行后使用二进制加法进行运算时,出现了这个错误:First chance exception at $5000D5E8. Exception class $C0000005 with message 'access violation at 0x5000d5e8: read of address 0xe5582603'. Process 计算器.exe (5428)。
出现这个错误时,同时弹出一个对话框“Debugger Exception Notification”,关掉对话框后,光标停留在,红色字体行:
 char& __fastcall operator [](const int idx)
    {
      ThrowIfOutOfRange(idx);   // Should Range-checking be optional to avoid overhead ??
      Unique();                 // Ensure we're not ref-counted (and Ansi)
      return Data[idx-1];
    }
以上函数不是我编写的,是自动弹出的dstring.h中的一个函数。
我写的二进制加法代码是:
int a1=0,a2,b1=0,b2,c1;
      char c[256];
      
      int n=a.Length();//a 是计算器中按加号时Edit1->Text的内容,也就是被加数,例如一个运算,111+101,a为“111”
      int m=Edit1->Text.Length();//Edit1->Text为按加号后的输入的内容,也就是加数,为“101”
      for(int i=0;i<n;i++)
      {
          a2=pow(2,i);//a2等于2的i次方
          a1=a1+int(a[n-1-i])*a2;//将输入二进制数转换为十进制数,赋值给a1
      }
      for(int i=0;i<m;i++)
      {
          b2=pow(2,i);//b2等于2的i次方
          b1=b1+int(Edit1->Text[m-1-i])*b2;//将输入二进制数转换为十进制数,赋值给b1
      }
      c1=a1+b1;
      itoa(c1,c,2);//将c1转换成二进制数,保存在c中
      Edit1->Text=c;//将c赋值给Edit1->Text,显示运算结果
请问各位高手,这个问题怎么解决啊?我就15分了,请各位别嫌少啊
搜索更多相关主题的帖子: 计算器 message address 二进制 
2012-12-17 09:47
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
收藏
得分:0 
回复 3楼 rjsp
非常感谢,问题解决
2012-12-18 11:09
快速回复:BCB中关于二进制加法的程序运行后发现的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041508 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved