Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2008
Avatar de Dedalo
Dedalo Dedalo is offline
Miembro
 
Registrado: abr 2008
Ubicación: Albacete (España)
Posts: 32
Poder: 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
  #2  
Antiguo 08-05-2008
drykea drykea is offline
Miembro
 
Registrado: abr 2007
Posts: 113
Poder: 18
drykea Va por buen camino
Muchas gracias por respoder tan pronto.

He probado las dos formas, recorrer la lista al reves y poner un while en vez de un for, y las dos han funcionado.

Una última pregunta ¿Que es más rápido el while o el for?
Responder Con Cita
  #3  
Antiguo 08-05-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
El problema es que me da 'List index of bounds'.
Eso pq al borrar un elemento el valor de Cod.Count cambia,
Cita:
Una última pregunta ¿Que es más rápido el while o el for?
Son iguales las dos, o las tres
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #4  
Antiguo 08-05-2008
drykea drykea is offline
Miembro
 
Registrado: abr 2007
Posts: 113
Poder: 18
drykea Va por buen camino
Muchas gracia por todas sus respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas para borrar registro jlalvarez PHP 2 12-11-2007 22:49:50
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Problemas con TStrings 1501 OOP 2 19-11-2004 03:36:04
Borrar caracteres de una cadena jymy788 Varios 2 29-10-2004 12:36:11


La franja horaria es GMT +2. Ahora son las 17:39:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi