当前位置:编程学习 > Delphi >>

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

delphi中定义了一个pchar指针,分配了一段内存空间。读进内容后,想读出这段内存空间以32位数为单位的整型。 大致如下,错误在哪?如何改一下 P:pchar; //申请内存及赋值 pint: PInteger; pint := Pinteger(P+i);//i为循环变量
追问:i的递增是1,主要是编译都编译不过去。也必须以1递增,依次算出每增加一个字节的地址,其32位值是多少
答案: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;
其他:指针大小是4,你的i循环递增是多少? pint := Pinteger(P)+i 

上一个:delphi过滤字符串
下一个:delphi动态创建了一个TEdit数组但是运行时看不到,求高人

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,