Uso de AnsiString como byte de matriz en Delphi XE4

Tratando de moverseDelphi 2007 proyecto paraXE4. EnDelphi 2007 Estaba usando la función que lee la matriz de bytes desde el socket usandoIndy directamente. PaséAnsiString Convertido a la matriz de byte a var parámetro de esta función:

var data:AnsiString;
AContext.Connection.IOHandler.ReadBytes(TIDBytes(Data), PacketLength-PacketLengthDelta-1, False);

EnDlphi XE cuando trato de concatinarData a otra cadena que tengoaccess violation error.

Ahora estoy tratando de simular este problema en un código más simple:

TIdBytes = array of Byte;

procedure fill(var b: TIDBytes);
begin
setlength(b,5);
b[0]:=61;
b[1]:=61;
b[2]:=61;
b[3]:=61;
b[4]:=61;

//original function used move function
end;



procedure TMainForm.FormCreate(Sender: TObject);
var s: ansistring ;
begin
fill( TIDBytes(s) );
Showmessage(s);
end;

Ahora espero ver algo como==== En el cuadro de mensaje, pero tengo uno vacío. Supuse que XE AnsiString actúa de la misma manera que Delphi 2007 Ansistring y puede usarlos como matriz de bytes en ambos casos.

¿Cuál es la mejor manera de resolver el problema de AnsiString con bytes?

Respuestas a la pregunta(2)

Su respuesta a la pregunta