Hola escafandra.
Cita:
La escritura fuera de los límites puede tener consecuencias y el compilador no avisa.
|
Si, comprendo la implicancia que tiene escribir fuera de los límites de un arreglo y estamos totalmente de acuerdo en ese punto, sólo que en este caso se trata de una lectura.
Por ejemplo, se puede correr este código una y otra vez sin ningún tipo de problemas ni mensajes (excepto el de finalización)
Código Delphi
[-]
…
var
i: Char;
j: Integer;
s, x: string;
begin
ListBox1.Items.BeginUpdate;
try
for i := 'A' to 'Z' do
for j:= 1 to 10000000 do
begin
s := s + i;
x := s[Length(s)+1]; if x = ' ' then ListBox1.Items.Add(i);
end;
finally
ListBox1.Items.EndUpdate;
end;
ShowMessage('fin');
end;
Siempre puse especial cuidado en no escribir en "zonas desconocidas", ya que no hay dudas sobre sus potenciales y nefastas consecuencias (reitero que mi duda no va por ese lado). Pero tenía el mismo concepto para con la lectura, por lo que nunca antes se me ocurrió probar y me resulta sorprendente el resultado de las pruebas.
Saludos