有一结构如: Rep=record
name:string;
age:integer;
end;还有一char数组buf:array[0..8163] of char
如何将buf中的数据读到Rep的一定偏移之后,
比如recv的时候,接受到的数据比SizeOf(Rep)小??
我对delphi的指针不是很熟,发现无类型指针不能加减??
name:string;
age:integer;
end;还有一char数组buf:array[0..8163] of char
如何将buf中的数据读到Rep的一定偏移之后,
比如recv的时候,接受到的数据比SizeOf(Rep)小??
我对delphi的指针不是很熟,发现无类型指针不能加减??
另外,string型的成员在record中只占四个字节,即只含有地址信息,你的reord实际只有8个字节,你的这个程序可能会有问题。如果要往record中写实际内容,应该定义为:
Rep = packed record // 加上packed不会进行对齐,因你要进行内存复制工作
name: array [0..MAX_NAME] of char; // 加上了一个空结束字符
age: integer;
end;具体用法:
// 假定buf为char数组, array [0..MAX_BUF] of char
Move( buf2[0], (Pchar(@req1)+5)^, sizeof(Rep)-5 ); // Move的参数不是指针,是引用