Ver Mensaje Individual
  #8  
Antiguo 15-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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]; //  lectura en: [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
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita