wit*_*rup 2 delphi udp casting 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;
Run Code Online (Sandbox Code Playgroud)
此代码导致访问冲突。
什么是要转换的正确方法字节数组以TB的在Delphi XE3?
您需要复制缓冲区。
Count := Length(AData);
SetLength(buffer, Count);
if Count <> 0 then
Move(AData[0], buffer[0], Length(AData));
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,Indy 的这一部分被 Embarcadero 搞砸了。请注意按值传递数组的可疑性。如果我记得,来自 repo 的 Indy 版本更好。