CNDEV
...
...
账号
登
登录
先
先随便看看
中国开发网
: 论坛:
Delphi/BCB
: 贴子 510196
没脾气2x
·
2007-05-14 12:48:44
·
阅读: 619
你的 sizeof 和他的 sizeof 用的不是一个地方啊
<空>
相关信息:
【技术铁】处理消息的时候栈溢出,找不到错误的原因,各位大善人帮帮藕啊!快疯了的说。。
(2272字)
(
龙之吻
[1352]
2007-05-14 11:57
)
看不懂耶~
(空) (
没脾气2x
[558]
2007-05-14 12:12
)
lstrcpyn?
(空) (
amo
[725]
2007-05-14 12:12
)
,这个可疑,不知道delphi里的怎么定义的,但是lstrcpyn(tnd.szTip, '自动更新程序', sizeof(tnd.szTip));这样的写法,龙之吻是不是没搞清l……
(空) (
周星驰
[897]
2007-05-14 12:29
)
lstrcpyn的用法啊?
(空) (
周星驰
[1119]
2007-05-14 12:29
)
而且你用sizeof(tnd.szTip)来指定要copy的字串长度(我猜是这个意义),一定等于'自动更新程序'的长度?tnd.szTip是C类型字串?那么也可能越界。
(空) (
周星驰
[693]
2007-05-14 12:34
)
function lstrcpyn; external kernel32 name 'lstrcpynA';
(111字)
(
龙之吻
[862]
2007-05-14 12:41
)
你先看看 sizeof(tnd.szTip) 是多长吧。
(空) (
没脾气2x
[610]
2007-05-14 12:43
)
这也是容易出错的地方,字符串长度一般是会用length()得到
(空) (
amo
[716]
2007-05-14 12:44
)
他的代码怎么是好的?我觉得好像不是这个地方,好像是procedure TfrmMain.MyNotify(var Message: TMessage);这里的
(457字)
(
龙之吻
[783]
2007-05-14 12:46
)
你的 sizeof 和他的 sizeof 用的不是一个地方啊
(空) (
没脾气2x
[618]
2007-05-14 12:48
)
sizeof 有可能他想取的是 array 的长度……,但这样取我不喜欢滴。
(空) (
没脾气2x
[546]
2007-05-14 12:47
)
你的 sizeof 和他的 sizeof 用的不是一个地方啊
(空) (
没脾气2x
[417]
2007-05-14 12:48
)
那么你用错了,查查msdn,还有你的sizeof是包括了0结束符号的长度的,这里应该用你要copy的字串的实际长度。程序切忌想当然地乱写一气,最起码应该文档中确认了用法
(空) (
周星驰
[758]
2007-05-14 12:45
)
如果是unicode,你这里传的sizeof会导致越界
(空) (
周星驰
[598]
2007-05-14 12:51
)
szTip: array [0..63] of AnsiChar;
(空) (
龙之吻
[562]
2007-05-14 13:02
)
你确定了 SizeOf 可以这样用嘛?
(空) (
pcplayer
[592]
2007-05-14 13:09
)
StrPLCopy(tnd.szTip,'自动更新程序', sizeof(tnd.szTip)-1);这样还是不对!
(空) (
龙之吻
[616]
2007-05-14 13:09
)
你查文档了吗?这里可能不是你程序出错的原因,但是却是错误的用法,lstrcpyn( tnd.szTip, "自动更新程序", 7/*不是你程序中的sizeof...*/ )
(空) (
周星驰
[684]
2007-05-14 13:14
)
周星星,delphi 的 lstrcpyn, 后面的 size 是指定缓冲区大小,不是字符串长度。
(空) (
没脾气2x
[774]
2007-05-14 13:16
)
就是这意思
(空) (
龙之吻
[627]
2007-05-14 13:18
)
他这个不是用的windows kernel32.dll里带的吗?是的话就应该这样,要不lstrcpyn后面的n就没意义了
(空) (
周星驰
[807]
2007-05-14 13:19
)
你确定了 SizeOf 可以这样用嘛? (空) (pcplayer [3] 今天 13:09 ) 测量一个 array 的长度应该是 Length
(空) (
pcplayer
[645]
2007-05-14 13:16
)
从代码上没啥问题啊
(空) (
bjwf
[607]
2007-05-14 12:12
)
栈溢出有可能是有了死循环的调来调去。你怎么调用的写出来吧,咯咯
(空) (
没脾气2x
[674]
2007-05-14 13:03
)
如果是溢出,多半是因为自己的代码循环调用自己了
(空) (
pcplayer
[667]
2007-05-14 13:10
)
我怀疑是响应一个消息或激发一个新的消息后,没有设置状态为已处理
(15字)
(
haitao
[644]
2007-05-14 13:11
)
暂时怀疑是这个: inherited Dispatch(Message);
(22字)
(
没脾气2x
[727]
2007-05-14 13:14
)
有可能。建议先去掉这一行看看。说不定就好了
(空) (
pcplayer
[641]
2007-05-14 13:17
)
好了。。。。
(空) (
龙之吻
[549]
2007-05-14 13:19
)
我也觉得是他
(空) (
龙之吻
[573]
2007-05-14 13:17
)
那你不先去掉试试。
(空) (
没脾气2x
[567]
2007-05-14 13:18
)
就是在这里出的错,可是我觉得处理完 我想要的消息,该交给系统处理别的。。。就没注释它
(空) (
龙之吻
[600]
2007-05-14 13:20
)
写错地方了。
(空) (
龙之吻
[662]
2007-05-14 13:23
)
你先看好了是否应该写这个:“Dispatch 方法会根据消息号码调用构件的最后代类中处理此消息的句柄方法”
(空) (
没脾气2x
[601]
2007-05-14 13:31
)
我用的好像不对!
(空) (
龙之吻
[547]
2007-05-14 16:08
)
查了一下,你的 Dispatch的问置或许应该用 DefaultHandler
(空) (
没脾气2x
[598]
2007-05-17 00:52
)
.
(空) (
龙之吻
[544]
2007-05-17 10:30
)
泄泻楼上几位牛,有机会请大家吃包子。。。
(21字)
(
龙之吻
[710]
2007-05-14 13:24
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录