Buenas, a mi me funciona, copie y pege tu implementacion tal cual e hice estas pruebas:
Código Delphi
[-]
implementation
var
Form3: TForm3;
listCampos: TArrayClaveValor;
procedure TForm3.InicializarClick(Sender: TObject);
var
i: integer;
registro: TClaveValor;
begin
SetLength(listCampos, 5);
for i := 0 to 4 do
begin
registro.Value := Format('Prueba %d', [i]);
listCampos[i] := registro;
end;
end;
procedure TForm3.BtnRecorrerClick(Sender: TObject);
var
registro: TClaveValor;
i: integer;
begin
for i := Low(listCampos) to High(listCampos) do
begin
listCampos[i].Value := ReverseString(listCampos[i].Value);
ShowMessage(Listcampos[i].Value);
end;
end;
Cuando llamo a ShowMessage me muestra el string invertido
Si no te entendi mal. Uso Delphi 2010