Delphi中如何将数组转换为指针?

[复制链接]
查看11 | 回复5 | 2012-2-14 12:47:59 | 显示全部楼层 |阅读模式
我觉得你应该先搞清楚WriteBuffer写入的时候是按照多少字节写入的,也就是说是1字节、2字节还是其它。一般如果仅仅是内存区域的话,我觉得按1字节的可能性最大,这样就存在问题了,你定义的是bufBit: Array of Integer; Integer在Delphi中是4字节的,你要是转化的话建议转化为Byte指针比较好:var
BP: PByte;begin
BP:= PBYTE(@BufBit[0]);
//处理部分end;呵呵,未验证,仅供参考另外,一楼所说很有道理!
1、看你WriteBuffer的写法似乎是为了和C语法兼容,未指定长度的话可能会以 0 作为结束符,需...
回复

使用道具 举报

千问 | 2012-2-14 12:47:59 | 显示全部楼层
关于DELPHI数组,指针,字符串转换的例子: var aa: array [0..5] of Char; bb:Pointer; cc:string; dd:PChar; procedure TForm1.Button1Click(Sender: TObject);begindd:='abcd...
回复

使用道具 举报

千问 | 2012-2-14 12:47:59 | 显示全部楼层
@bufBit,还是@bufBit[0]如果bufBit定义的下标是从0开始的,二种写法没有区别,效果一样。@是肯定都要带着的。但是你的数组如果仅仅是写了“var bufBit: Array of Integer;”,肯定不能直接拿来引用。引用前要么动态分配一下,要么直接重新定义成固定长度的数组,如array [0..BUFMAXSIZE-1]o...
回复

使用道具 举报

千问 | 2012-2-14 12:47:59 | 显示全部楼层
需要另外设一个指针变量var ptr:^integer;beginptr=@bufBit[0];WriteBuffer(ptr);不过,很少有WriteBuffer(pBuffer: Pointer)这样只写指针的函数(一般还有个长度参数),所以所给出的只保证语法正确,不保证能正确使用WriteBuffer....
回复

使用道具 举报

千问 | 2012-2-14 12:47:59 | 显示全部楼层
@bufBit[0]就可以了,会自动转换的...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行