Delphi将字节数组转换为TBytes - UDP重定向?

时间:2013-10-28 17:32:45

标签: delphi casting udp type-conversion delphi-xe3

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

1 个答案:

答案 0 :(得分:4)

您需要复制缓冲区。

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

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