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?