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?