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 24-01-2008
david.rguez david.rguez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Zamora, la bien cercada
Posts: 104
Poder: 18
david.rguez Va por buen camino
Método Add(s) de TStringList no me hace caso

Hola a todos/as:

En un módulo de un programa tengo que utilizar un TStringList ya que tengo que mantener de forma dinámica una lista de claves de exclusión durante la ejecución del programa (para evitar que cierto proceso que tengo que hacer se duplique, generando basura en los resultados).

El caso es que cuando intento añadir un nuevo String a la lista:

Código:
lista.add(qtrazaTRAZA12.Value);
No hace ni caso. Es decir, no salta ningún error, pero la lista continúa vacía, con lo que se va al carajo el sistema de control que estoy montando para guiar el proceso.

El campo TRAZA12 al que hago referencia sí es un String y antes de usar la lista hago un create sobre la variable.

¿Alguien sabe por qué no hace nada?
Responder Con Cita
  #2  
Antiguo 24-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Y estás seguro que esa línea se ejecuta?

A lo mejor el compilador la elimina por que no le encuentra relevancia...

Pon un breakpoint en esa linea (F5) y compila tu programa, si el breakpoint sigue activo, ejecuta el programa y ve que sucede antes y despúes de esa línea...


Saludos...
Responder Con Cita
  #3  
Antiguo 24-01-2008
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
y si usas un cast?
lista.add(string(qtrazaTRAZA12.Value));

o incluso no se si puedas hacer esto:
lista.add(qtrazaTRAZA12.AsString);

o ya de plano:
stringTemp := qtrazaTRAZA12.Value;
lista.add(stringTemp);
Responder Con Cita
  #4  
Antiguo 24-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
De verdad, no me la creo!!!

Nunca he visto a un StringList fallar de esta manera. Creo que la línea de código no está ejecutándose, quizás porque las condiciones no se dan para que pase por allí. Estoy seguro que el optimizador no eliminaría una línea como esta.

Otra posibilidad es que estes determinando erroneamente que la línea no se añade, pero que realmente si lo hace. Ambas cosas son fáciles de determinar:

Código Delphi [-]
Lista.Add(qTrazaTRAZA12.Value);
ShowMessage(Lista.Text);

Si se muestra el mensaje, el código se está ejecutando. Si el mensaje mostrado es distinto del valor del campo, sigamos echandole la culpa al StringList, si no, busquemos al verdadero culpable!!.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 24-01-2008
david.rguez david.rguez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Zamora, la bien cercada
Posts: 104
Poder: 18
david.rguez Va por buen camino
LA línea sí llega a ejecutarse. Puse puntos de depuración lo primero para corroborarlo y sí llega ahí sin dar problemas.

Sin embargo, no hace nada, tras pasar esa línea el depurador me indica que la lista continúa vacía (no he puesto ShowMessage, lo consulté desde un estado de parada en depuración).

Ya he probado otros modos que me comentasteis como el AsString y el cast, pero el resultado es el mismo
Responder Con Cita
  #6  
Antiguo 24-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
¿Cómo estas comprobando que la lista está vacía?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 24-01-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
¿Podemos ver el código (no sólo una línea)?
Responder Con Cita
  #8  
Antiguo 25-01-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola.

Cita:
Empezado por david.rguez Ver Mensaje
...LA línea sí llega a ejecutarse...tras pasar esa línea el depurador me indica que la lista continúa vacía...
Entonces la única explicación razonable que queda (considerando no te has equivocado de lista), es que la expresión qtrazaTRAZA12.Value, devuelve una cadena vacía en ese momento. ¿Estará ese campo vacío? (campo en blanco en el registro actual, cero registros en el conjunto de datos por estar éste cerrado o filtrado...).

No dejes de respondernos sobre estas cuestiones, aún cuando hayas encontrado la solución.

Saludos.

Al González.
Responder Con Cita
  #9  
Antiguo 25-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Entonces la única explicación razonable que queda (considerando no te has equivocado de lista), es que la expresión qtrazaTRAZA12.Value, devuelve una cadena vacía en ese momento. ¿Estará ese campo vacío?
Me temo Al, que si ese fuese el caso, la lista no estaría vacía, pues contendría una cadena vacía en su primer elemento.

Se que puede tomarse por un tecnicismo... tampoco creas que me estoy entrenando para abogado, pero francamente no es lo mismo.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 25-01-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Vaya que no es lo mismo. Mayor razón para que David responda a tu última pregunta con más precisión. Tú y yo sabemos lo que es una lista realmente vacía, pero en el sentido general un texto sin caracteres (visibles) es coloquialmente considerado como algo vacío. Mi sospecha va por esa línea de investigación.

Saludos.

Al González.
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
¡En un mes me caso! ContraVeneno La Taberna 54 23-10-2006 10:15:56
Caso específico sierraja Firebird e Interbase 9 12-01-2006 00:18:54
Caso con DLL. mlara Varios 12 19-08-2005 04:48:20
Caso SuperRaro con Transacciones AGAG4 SQL 2 19-08-2004 16:32:28
Caso real.... jafl1965 Humor 1 04-11-2003 10:36:05


La franja horaria es GMT +2. Ahora son las 03:15:06.


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