Uso de AnsiString como byte de matriz en Delphi XE4
Tratando de moverseDelphi 2007
proyecto paraXE4
. EnDelphi 2007
Estaba usando la función que lee la matriz de bytes desde el socket usandoIndy
directamente. PaséAnsiString
Convertido a la matriz de byte a var parámetro de esta función:
var data:AnsiString;
AContext.Connection.IOHandler.ReadBytes(TIDBytes(Data), PacketLength-PacketLengthDelta-1, False);
EnDlphi XE
cuando trato de concatinarData
a otra cadena que tengoaccess violation
error.
Ahora estoy tratando de simular este problema en un código más simple:
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;
Ahora espero ver algo como====
En el cuadro de mensaje, pero tengo uno vacío. Supuse que XE AnsiString actúa de la misma manera que Delphi 2007 Ansistring y puede usarlos como matriz de bytes en ambos casos.
¿Cuál es la mejor manera de resolver el problema de AnsiString con bytes?