如何取得无类型变量的数据(再来)(100分)

  • 主题发起人 主题发起人 Minko
  • 开始时间 开始时间
M

Minko

Unregistered / Unconfirmed
GUEST, unregistred user!
function myfunction(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
buffer: pchar;
begin
result:=TSend(s,buffer,len,flags);
SaveForWriteFile(Buf,len);
buffer:=Pchar(Buf);//这里应该是不行的因为Pchar(Buf)改变了原有参数的类型
SaveForMy(Buffer,sizeof(buffer));
//这里Pchar类型的Buffer明显不是原有Buf的内容,因保存后两个信息差距很大。
end;

如何可以将Buf参数中的值拷贝到buffer中呢?Buf一定不能改变,而buffer要完全复制Buf
 
CopyMemory(Buffer, @Buf, len);

Move(Buf, Buffer^, Len);

 
用Move即可!
var
Buffer:pchar;
begin
//Buffer := Pchar(Buf);
GetMem(Buffer,Len);
Move(Buf^,Buffer^,Len);
.....
FreeMem(Buffer);
end;
 
这个问题不难因为有len
另外你的用法并没有改变参变的类型
var mybuff:array of char;
pchar:=^mybuff;
setlength(mybuff,len);
for i:=0 to len do
begin
mybuff:=(buf as char);
end;
 
后退
顶部