Rz控件的一个BUG,不知道怎么解决

ck_邬 2012-08-14 11:25:02
我用了RzSizePanel控件,每次在调试程序弹出界面时出现"Range Check Error"
追踪代码是如下函数,不知道错误在哪?出问题的单元是RzSplit.pas,
我开发的环境是XE2+WINXP。

procedure TRzCustomSizePanel.WMPaint( var Msg: TWMPaint );
var
DC, MemDC: HDC;
MemBitmap, OldBitmap: HBITMAP;
PS: TPaintStruct;
R: TRect;
begin
if not FDoubleBuffered or ( Msg.DC <> 0 ) then
begin
if not ( csCustomPaint in ControlState ) and ( ControlCount = 0 ) then
inherited
else
PaintHandler( Msg );
end
else
begin
DC := GetDC( 0 );
R := BoundsRect;
MemBitmap := CreateCompatibleBitmap( DC, R.Right, R.Bottom );
ReleaseDC( 0, DC );
MemDC := CreateCompatibleDC( 0 );
OldBitmap := SelectObject( MemDC, MemBitmap );
try
DC := BeginPaint( Handle, PS );
Perform( wm_EraseBkgnd, Longint( MemDC ), Longint( MemDC ) ); //出错在这里Range Check Error
Msg.DC := MemDC;
WMPaint( Msg );
Msg.DC := 0;
BitBlt( DC, 0, 0, R.Right, R.Bottom, MemDC, 0, 0, SRCCOPY );
EndPaint( Handle, PS );
finally
SelectObject( MemDC, OldBitmap );
DeleteDC( MemDC );
DeleteObject( MemBitmap );
end;
end;
end;
...全文
383 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyhong 2014-09-25
  • 打赏
  • 举报
回复
引用 4 楼 chadwick 的回复:
[Quote=引用 1 楼 的回复:] rz是成熟控件,发展了很多版本,所以问题出现在上述内容的可能性基本不存在。看看之前的地方。 [/Quote] 我用D7没问题。转到XE2就出问题了,相同的程序
我也是同样的情况,在找答案呢
ck_邬 2012-08-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
http://stackoverflow.com/questions/11658519/cause-of-range-check-error-delphi
[/Quote]能更直接告诉我是怎么回事吗?英文看的不太懂啊。。
ck_邬 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
RZ控件装了有源码的,可以拿过来,自己改一改
[/Quote]源码就是上面那段啊,我就是不知道该怎么改。。
gwhdaxia 2012-08-16
  • 打赏
  • 举报
回复
RZ控件装了有源码的,可以拿过来,自己改一改
ck_邬 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
跟踪测试一下,可能是代码有问题吧
[/Quote]就是那段代码有问题。。但不知道怎么改过来。。
山东蓝鸟贵薪 2012-08-16
  • 打赏
  • 举报
回复
跟踪测试一下,可能是代码有问题吧
ck_邬 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 3 楼 的回复:
无论控件怎么成熟,如果没有对异常进行处理好难道就不是BUG了?

请搞清楚,异常并不等于BUG,Delphi源码中也会抛出甚至制造一些异常,那是设计逻辑的需要。
而更多的时候,抛出异常的作用正是设计用来提醒程序员:“嘿,兄弟,你这里的代码写错了!”
[/Quote]无论如何。加上异常捕捉不能解决问题,我在调试的时候还是会跳出那个错误提示
xulibing1016 2012-08-15
  • 打赏
  • 举报
回复
么遇到这个bug
JPEXE 2012-08-14
  • 打赏
  • 举报
回复
先查自己的问题,不要轻易说别人有BUG
frtrnr 2012-08-14
  • 打赏
  • 举报
回复
rz是成熟控件,发展了很多版本,所以问题出现在上述内容的可能性基本不存在。看看之前的地方。
JPEXE 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
无论控件怎么成熟,如果没有对异常进行处理好难道就不是BUG了?
[/Quote]
请搞清楚,异常并不等于BUG,Delphi源码中也会抛出甚至制造一些异常,那是设计逻辑的需要。
而更多的时候,抛出异常的作用正是设计用来提醒程序员:“嘿,兄弟,你这里的代码写错了!”
ck_邬 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
用try expect end 把这段代码包起来试试
[/Quote]这个只是不让用户知道啊,但自己调试时还是不停的强错啊.
cplm88 2012-08-14
  • 打赏
  • 举报
回复
用try expect end 把这段代码包起来试试
ck_邬 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
跟RZ版本有没关系,找最新的RZ试试?
有可能与XE2的磨合还有所欠缺
[/Quote]
我能猜想到的原因就是RZ与XE2还在磨合期,还不太完善,但现在已经是最新版了。
但我也不知道在XE2里上面的代码该如何修改。
林石公 2012-08-14
  • 打赏
  • 举报
回复
跟RZ版本有没关系,找最新的RZ试试?
有可能与XE2的磨合还有所欠缺
ck_邬 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
rz是成熟控件,发展了很多版本,所以问题出现在上述内容的可能性基本不存在。看看之前的地方。
[/Quote]
我用D7没问题。转到XE2就出问题了,相同的程序
ck_邬 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
先查自己的问题,不要轻易说别人有BUG
[/Quote]
无论控件怎么成熟,如果没有对异常进行处理好难道就不是BUG了?

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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