做了个截屏后比较的程序,运行一段时间后就出现错误。 为了查看上班时间用电脑做什么,思路是:在电脑启动时自动运行程序(截图后让两个图片内容一样),判断是否在上班时间,如果在上班时间,屏幕有变化(图1将重新截,然后用ScanLine比较两图)则将变化存入数据库。如果屏幕无变化则不存。现在问题是程序运行一段时间后就出现错误:有时是内存地址占用问题,有时是存储空间不足问题,怎么回事?是我的bitmap没正确释放? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 出现的错误和这个差不多。http://www.fzyw.cn/111.jpg 从你贴的错误信息上看不出具体问题何在,估计是内存没释放,或者数据库的问题。关键是你没必要一直比对,你应该写一个APIHook(例子代码网上多得很),接管InvalidateRect、InvalidateRgn,有更新区域之后再存。 内存访问出错,查你的程序是否有内存泄漏.测试程序时将编译项的Runtime errors全部打开,或用第三方的测试工具(如boundcheck)对程序进行测试. to DelphiGuy:我没有一直比较,就是在两个截图中取一个区域进行比较,如果有一点不一样就退出比较,然后保存。 也是,如果图有不同,反而比较的少。你说的APIHook我不会用啊。我是个自学的,只是自己玩玩,能教我怎么进行你说的---(接管InvalidateRect、InvalidateRgn,有更新区域之后再存。)吗? 对于这类内存出错,可以根据报错信息找到源代码行,然后就好定位了,给你一个方法供你参考,百试百灵:Access violation是程序中最常见的一种错误,但是我们可以利用Access violation的提示信息,定位到源代码的具体位置,例如:Access violation at address 005B21FE in module Project1.exe'. Read of address 8080809C,其中005B21FE就是MAP地址,我们只要用这个公式:005B21FE-400000-1000=1B11FE,然后通过源代码生成的MAP文件找到最近的位置,就可以定位了。MAP文件的结构为:2997 0001:001B11F3 3000 0001:001B1207,它是和源代码对应的,前面是源代码行,后面是MAP地址,在DELPHI中生成MAP文件的选项是:Project->Options->Linker->Map file->选中Detailed 是啊,有时会出现“存储空间不足”这样的问题,我用的是ACCESS,可有时才几M啊。MAP文件末尾Line numbers for Project1(H:\拍照\Project1.dpr) segment .text 9 0001:0009C98C 10 0001:0009C99C 11 0001:0009C9A8 12 0001:0009C9C0 13 0001:0009C9CCBound resource filesd:\program files\borland\delphi7\Lib\Buttons.resd:\program files\borland\delphi7\Lib\ExtDlgs.resd:\program files\borland\delphi7\Lib\Controls.resUnit1.dfmProject1.resProject1.drfProgram entry point at 0001:0009C98C 是用的timer控件,每两秒截一个图片比较。还有个问题,用SCANLINE时能隔行比较吗? 能用变量向组件的commandtext属性中传递参数? 找朋友!找活干!散分! 在csdn里面,简单的问题很多人抢答,稍微带点难度的问题,就没人了! :( 大家都来!~200分!UP的都有分,只要把这个简单的问题解决了!然后我再发分给大家 大家帮忙看看~~~怎么指向指定记录。谢谢,马上给分!!!!! 循环处理数据的问题 thank you!!! 在窗口中动态创建了几个控件…… 怎样知道某字符串在另一个字符串中出现的次数? 如何调用Windows软键盘功能(输入法里面的软键盘),急急急.....请大事多多指教,感谢感谢! 以下的语句是什么语法? 我想修改一个控件的源代码
我没有一直比较,就是在两个截图中取一个区域进行比较,如果有一点不一样就退出比较,然后保存。
MAP文件末尾Line numbers for Project1(H:\拍照\Project1.dpr) segment .text 9 0001:0009C98C 10 0001:0009C99C 11 0001:0009C9A8 12 0001:0009C9C0
13 0001:0009C9CCBound resource filesd:\program files\borland\delphi7\Lib\Buttons.res
d:\program files\borland\delphi7\Lib\ExtDlgs.res
d:\program files\borland\delphi7\Lib\Controls.res
Unit1.dfm
Project1.res
Project1.drf
Program entry point at 0001:0009C98C