procedure TForm1.UDPUDPRead(AThread: TIdUDPListenerThread;
AData: array of Byte; ABinding: TIdSocketHandle);
var
buffer : TBytes;
begin
SetLength(buffer, Length(AData));
buffer := @AData[0];
end;
此代码会导致访问冲突。
在Delphi XE3中将字节数组转换为 TBytes 的正确方法是什么?
答案 0 :(得分:4)
您需要复制缓冲区。
Count := Length(AData);
SetLength(buffer, Count);
if Count <> 0 then
Move(AData[0], buffer[0], Length(AData));
我有一种感觉,Indy的这一部分被Embarcadero搞砸了。请注意值的可疑传递。如果我记得,回购中的Indy版本更好。