Verwenden von AnsiString wie das Byte eines Arrays in Delphi XE4

Ich versuche mich zu bewegenDelphi 2007 projizieren zuXE4. ImDelphi 2007 Ich habe eine Funktion verwendet, die das Byte-Array vom Socket mit liestIndy direkt. Ich bestandAnsiString umgewandelt in ein Array von byte to var Parameter dieser Funktion:

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

ImDlphi XE wenn ich versuche zu verkettenData zu einer anderen Saite habe ich bekommenaccess violation Error.

Jetzt versuche ich, dieses Problem in einfacherem Code zu simulieren:

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;

Jetzt erwarte ich so etwas zu sehen==== im nachrichtenkasten, aber ich hab eins leer bekommen. XE AnsiString verhält sich vermutlich genauso wie Delphi 2007 Ansistring und kann in beiden Fällen wie ein Byte-Array verwendet werden.

Was ist der beste Weg, um das Problem, AnsiString mit Bytes zu füllen, zu lösen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage