delphi中如何对一段pchar空间转换成整型值。

delphi中定义了一个pchar指针,分配了一段内存空间。读进内容后,想读出这段内存空间以32位数为单位的整型。大致如下,错误在哪?如何改一下P:pchar;//申请内... delphi中定义了一个pchar指针,分配了一段内存空间。读进内容后,想读出这段内存空间以32位数为单位的整型。

大致如下,错误在哪?如何改一下
P:pchar;
//申请内存及赋值
pint: PInteger;
pint := Pinteger(P+i);//i为循环变量
展开
 我来答
己闻楣Sx
2011-08-08 · TA获得超过1935个赞
知道大有可为答主
回答量:1057
采纳率:93%
帮助的人:892万
展开全部
delphi 2009以上,PChar指向的是UnicodeChar,大小是2个字节,不再是1个字节,为了保证各个版本的编译效果相同,不应认定Char占1个字节。对于你的问题,可以把PChar的处置赋予Pint后,直接对PInt递增1达到,万全的写法如下:

i : Integer;
P : PChar;
pint : PInteger;
......
pint := PInteger( P );
// 下面的循环终值如在申请内存时得到了,就用它,如果数据长度未定,则用下面的公式计算,但要求数据尾部得有#0
for i := 1 to Length( string( P ) ) * SizeOf( Char ) div 4 do
begin
// 处理pint^,即一个32位整数
......
Inc( pint );
end;
度宝谭i
2011-08-08
知道答主
回答量:46
采纳率:0%
帮助的人:13.5万
展开全部
指针大小是4,你的i循环递增是多少?
追问
i的递增是1,主要是编译都编译不过去。也必须以1递增,依次算出每增加一个字节的地址,其32位值是多少
追答
i的递增是4,你就可以得到正确答案了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
咔咔WKK
2011-08-09
知道答主
回答量:35
采纳率:0%
帮助的人:24.3万
展开全部
pint := Pinteger(P)+i
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式