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的正确方法是什么?

最佳答案

您需要复制缓冲区。

Count := Length(AData);
SetLength(buffer, Count);
if Count <> 0 then
  Move(AData[0], buffer[0], Length(AData));


我感觉印巴的这一部分被Embarcadero搞砸了。请注意数组按值的可疑传递。如果我还记得,回购中Indy的版本更好。

关于delphi - Delphi将字节数组转换为TBytes-UDP重定向?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19641318/

10-09 17:53