Używanie AnsiString jak bajt tablicy w Delphi XE4

Próbuję się ruszyćDelphi 2007 projektować doXE4. WDelphi 2007 Korzystałem z funkcji, która odczytuje tablicę bajtów z gniazda za pomocąIndy bezpośrednio. zdałemAnsiString rzutowane na tablicę bajtu na parametr var tej funkcji:

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

WDlphi XE kiedy próbuję konkatowaćData do innej struny, którą dostałemaccess violation błąd.

Teraz próbuję symulować ten problem w prostszym kodzie:

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;

Teraz spodziewam się zobaczyć coś takiego==== w oknie wiadomości, ale zostałem pusty. Przypuszczałem, że XE AnsiString działa tak samo jak Delphi 2007 Ansistring i można używać ich jak tablic bajtów w obu przypadkach.

Jaki jest najlepszy sposób na rozwiązanie problemu wypełniania AnsiString bajtami?

questionAnswers(2)

yourAnswerToTheQuestion