Usando AnsiString como byte de array no Delphi XE4

Tentando se moverDelphi 2007 projeto paraXE4. EmDelphi 2007 Eu estava usando a função que lê matriz de bytes do soquete usandoIndy diretamente. eu passeiAnsiString casted para matriz de byte para var parâmetro desta função:

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

EmDlphi XE quando tento concatinarData para outra corda eu tenhoaccess violation erro.

Agora estou tentando simular esse problema em um código mais simples:

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;

Agora eu espero ver algo como==== na caixa de mensagem, mas eu tenho um vazio. Eu supus que XE AnsiString age da mesma forma que o Delphi 2007 Ansistring e você pode usá-los como uma matriz de bytes em ambos os casos.

Qual é a melhor maneira de resolver o problema de enchimento AnsiString com bytes?