如何取指针里面的数据?

changsn 2012-06-16 04:35:22
比如: buf:pointer//缓存指针; 指向 buffer:array[0..1023]of byte;


Login:TLogin//自定义结构 ,存放在buffer[1]个位置,前面是自定义的数据头。

只给出指针,如果在不复制指针后面的数据的情况下,如何将buffer[1]后面的数据提取出来
copymemroy(@Login,@buf^[1],sizeof(TLogin));//这样是错的。不知道怎么写。
...全文
1515 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangning 2012-06-18
  • 打赏
  • 举报
回复
将tlogin定义成指针,将它指向数组不久可以了

type
TBuffer = array[0..1023]of byte;
PLogin=^Tlogin;
Tlogin=packed record
name:array[0..15] of Char;
sex:Byte;
pass:array[0..31] of Char;
end;


procedure TForm1.Button1Click(Sender: TObject);
var buffer:TBuffer ;
login:Tlogin;
I:Integer;
begin
for I := 0 to 1023 do
buffer[i]:= Byte(I)+$30;
login := PLogin(@buffer)^;
ShowMessage(login.name);
end;
「已注销」 2012-06-18
  • 打赏
  • 举报
回复
move
UnkownState 2012-06-18
  • 打赏
  • 举报
回复
CopyMemory(pDest, Pointer(Integer(buf)+1), size)

要区别有类型的指针和吴类型的指针加减常量
zplovepkk 2012-06-16
  • 打赏
  • 举报
回复
支持一楼的兄弟,
changsn 2012-06-16
  • 打赏
  • 举报
回复
大哥,第二种,对指针inc dec 这样操作安全吗?
[Quote=引用 1 楼 的回复:]

[/Quote]
mdejtod 2012-06-16
  • 打赏
  • 举报
回复
type
TBuffer = array[0..1023]of byte;

var buffer:TBuffer ;
copymemroy(@Login,@TBuffer(buf^)[1],sizeof(TLogin));

或者
inc(longword(buf));
copymemroy(@Login,buf,sizeof(TLogin));
dec(longword(buf));

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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