当下载文件达到22M的时候,进度条就不走动了,我调试发现setpos(npos)中的npos的值是82,然后下一步会出现负值,有人遇到过这个情况没有,进度条范围我设置(0,100)。

解决方案 »

  1.   

    检查内存吧估计是你其他的位置内存操作错误导致npos的值被改了 所以才会是负值了
      

  2.   

    能否 复制部分代码这么猜 实在太难了啊内存方面比如 MEMCPY 之类的操作
      

  3.   

    应该不是这个问题,因为后来我不用npos,我是这样的,比如下载了(n_download),文件大小总共(n_total)30M,
    我就用setpos(n_download*100/n_total),但是下到22M的时候进度条就不走了,但是文件还在下载。
      

  4.   

    int 表示范围为 -2G 到 2G
    22M * 100 = 2G 刚好到达最大值, 再大就越界了, 所以成了负数用 double
    setpos((int)((double)n_download)*100.0/n_total)
      

  5.   

    少了个括号, 转换不好看, 建议改变量类型
    setpos((int)(((double)n_download)*100.0/n_total))
      

  6.   

    进度条最好不这么用,应该用StepIt( );一开始算好下载多少就前进一步,到时调用StepIt( )就行了