Ver Mensaje Individual
  #3  
Antiguo 08-05-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Reputación: 0
Dedalo Va por buen camino
Delphi toma el valor de I cuando se inicia el bucle. Si borras uno o mas elementos de la tabla, cuando I llega al valor inicialmente capturado Cod.Count-1 ya estas fuera de la tabla. Por ejemplo, tienes una tabla de 25 elementos, al inicio del bucle pascal determina que debe contar desde 0 hasta 24, si borras algun elemento de la tabla da igual, la cuenta llegará a 24, y como has borrado un elemento, cuando intentes borrar o comprobar el elemento num. 24 estas fuera de rango.

Lo mejor en esos casos es hacer un bucle While o Until.

Código Delphi [-]
I=0;
while I < Cod.Count do
begin
...
Cod.Delete(I);
...
inc(I);
end;

Código Delphi [-]
I=0;
repeat
...
Cod.Delete(I);
...
inc(I);
until I = Cod.Count;

Asi compruebas el valor de Cod.Count en cada pasada

Última edición por Dedalo fecha: 08-05-2008 a las 11:08:19.
Responder Con Cita