Ver Mensaje Individual
  #21  
Antiguo 15-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Si, siempre lo entendí del mismo modo (de allí que empecé las pruebas extendiendo la cadena un espacio mas).
Pero contra toda predicción, no hubo advertencia ni errores al acceder a una posición mas allá del valor de Length, eso me dejó con dudas e hice múltiples pruebas sin lograr que se produzca advertencia o error alguno. De ahí que atribuí que obtenía ese resultado por tratar con un AnsiString.

Realmente siempre puse cuidado en no acceder a una posición mayor al largo de una cadena pensando en que generaría un error, pero todas las pruebas realizadas hasta ahora me indican que, al menos acceder (lectura) a una posición mas del valor devuelto por Length de un AnsiString no genera error.

¿ Conoces algún caso en que se produzca ?

Saludos
En un array podemos definir por código un índice que se salga del rango:

Código Delphi [-]
var
  S: array [0..0] of char;
  i: integer;
begin
  i:= 10;
  S[i]:= #0;
end;

En ese caso, debemos velar por que no suceda o tener bien controlado lo que hacemos. La escritura fuera de los límites puede tener consecuencias y el compilador no avisa.

Saludos
Responder Con Cita