实际上动态数组就是一个指针,所以
CopyMemory(@Buffer,sTemp,3);应当改为CopyMemory(Buffer,sTemp,3);
同样
CopyMemory(PChar(sStr),Buffer,2);
就应当可以了
CopyMemory(@Buffer,sTemp,3);应当改为CopyMemory(Buffer,sTemp,3);
同样
CopyMemory(PChar(sStr),Buffer,2);
就应当可以了
var
sTemp,pTemp:PChar;
sStr:string;
Buffer:array of byte;
begin
sTemp:='123';
SetLength(Buffer,10);
CopyMemory(Buffer,sTemp,3);
SetLength(sStr,2);
CopyMemory(PChar(sStr),Buffer,2);
ShowMessage(sStr);
end;
可以看一下:
procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;
copymemory的参数已经是地址,所以不用再用@.
sTemp,pTemp:string;
sStr:string;
Buffer:array of byte;
begin
sTemp:='12345';
SetLength(Buffer,10);
CopyMemory(@Buffer,@sTemp[1],3);
SetLength(sStr,2);
sStr:=Copy(Buffer,1,2);
ShowMessage(sStr);
end;试试吧!应该可以的!