Ver Mensaje Individual
  #1  
Antiguo 13-03-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 22
ixMike Va por buen camino
Código "erroneo" pero que funciona

Hola a todos.

Tengo una pequeña duda desde hace algún tiempo, que no resulta ningún problema, pero que me extraña demasiado y ya he discutido antes.

De todos es conocido el siguiente código:

Código Delphi [-]
 
Tabla.First;
While not Tabla.EOF do
  begin
  //Hacer cosas con los registros
  Tabla.Next;
  end;

Sirve (y funciona a la perfección) para recorrer todos los registros de una tabla y hacer con ellos lo que quieras.

Pero ahora analicemos a fondo esas líneas.

Tabla.First;

Hasta aquí bien. Situamos a la tabla en su primer registro.
Después comprueba si estamos en el último. Como mi tabla hipotética tiene 100.000 registros, pues va a ser que no, así que analiza el 1º registro y cuando acaba pasa al segundo con Tabla.Next;
Bien, vuelve a hacer la comprobación. Seguimos sin estar en el último registro, por lo que analiza el segundo y pasa al tercero, y así sucesivamente hasta el 99.998. Lo analiza y como no es el último pasa al 99.999. Lo analiza y como no es el última pasa al 100.000. Hace la comprobación y... ¡ES EL ÚLTIMO! Por lo que el último registro (con este código) jamás sería analizado. Pero todos los que lo hemos usado saben que funciona a la perfección.

¿Alguien sabe por qué sucede esto?
Responder Con Cita