Usando AnsiString como byte de array no Delphi XE4
Tentando se moverDelphi 2007
projeto paraXE4
. EmDelphi 2007
Eu estava usando a função que lê matriz de bytes do soquete usandoIndy
diretamente. eu passeiAnsiString
casted para matriz de byte para var parâmetro desta função:
var data:AnsiString;
AContext.Connection.IOHandler.ReadBytes(TIDBytes(Data), PacketLength-PacketLengthDelta-1, False);
EmDlphi XE
quando tento concatinarData
para outra corda eu tenhoaccess violation
erro.
Agora estou tentando simular esse problema em um código mais simples:
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;
Agora eu espero ver algo como====
na caixa de mensagem, mas eu tenho um vazio. Eu supus que XE AnsiString age da mesma forma que o Delphi 2007 Ansistring e você pode usá-los como uma matriz de bytes em ambos os casos.
Qual é a melhor maneira de resolver o problema de enchimento AnsiString com bytes?