FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Bucle while sólo devuelve un valor
Hola a todos.
Ante todo y como siempre, gracias por leer este post y a ver si alguien puede echarme una mano. Estoy desarrollando una aplicación, en principio sencilla, que obtiene el código fuente HTML de un sitio web y lo guarda en un TMemoryStream. Posteriormente, este código lo cargo en un TStringList para poder manipularlo y extraer la información que necesito mediante algunas funciones que ya tengo preparadas. Hasta aquí bien. Lo que ocurre ahora es que los resultados son varios a lo largo del código fuente y para cogerlos todos he creado el siguiente código:
Tambien he probado con:
Lo que me ocurre con ambos es que sólo me devuelve el primer resultado que hay en el código... Y al menos hay 7 resultados. Si es capaz de sacar el primer resultado, porqué se detiene y no obtiene los siguientes? Que estoy haciendo mal? Gracias de antemano. Saludos. Última edición por nlsgarcia fecha: 11-03-2015 a las 16:39:03. Razón: Sintaxis Delphi |
#2
|
||||
|
||||
Jovalca,
Cita:
Revisa esta código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, genera valores en un TStringList, los procesa y muestra posteriormente en un TMemo para simular la aplicación descrita en el Msg #1. Espero sea útil Nelson. |
#3
|
|||
|
|||
Muchas gracias por tu respuesta Nelson.
Lo único es que no veo si puede ayudarme ya que es prácticamente lo que tengo yo. En tu mensaje:
Lo unico que no comprendo es esto:
La verdad, se me mezcla todo un poco en la cabeza porque hacia tiempo que no cogía este lenguaje ya que últimamente ando con php,html,css... Esta es la funcion que uso para encontrar y extraer la etiqueta en la lista. Es posible que algo esté mal aquí?
Gracias de nuevo. Última edición por nlsgarcia fecha: 11-03-2015 a las 20:16:48. Razón: Sintaxis Delphi |
#4
|
||||
|
||||
Jovalca,
Cita:
Te comento: 1- El código propuesto en el Msg #2 tiene como único objetivo simular la aplicación mencionada del Msg #1 y mostrar como utilizar los ciclos For y While en dicha simulación. 2- Este es el ciclo For del Msg #1: La línea destacada en rojo produce un error de compilación : [DCC Error] Unit1.pas(32): E2081 Assignment to FOR-Loop variable 'i', no se puede modificar el índice del ciclo For durante su ejecución. 3- Este es el ciclo While del Msg #1: La línea destacada en rojo, incrementa el contador del indice antes de obtener el primer valor de Lista, debe ser después y no indica en que punto fue inicializada a cero dado que en Delphi los indices inician generalmente en dicho valor. 4- La función ExtractTagAndTextInsideGivenTagEx del Msg #2, tiene como único objetivo simular dicha función para efectos de los ciclos For y While. 5- Te sugiero hacer un Debug a la función ExtractTagAndTextInsideGivenTagEx del Msg #3 y verificar si esta retorna en todos casos los valores esperados. Cita:
Espero sea útil Nelson. Última edición por nlsgarcia fecha: 11-03-2015 a las 19:04:14. |
#5
|
|||
|
|||
Hola de nuevo Nelson.
Otra vez, gracias por tu tiempo. Entiendo ahora tus ejemplos. He reescrito el código y ahora creo que está correcto, al menos no hay advertencias ni corta en ningún momento. Este es el código completo. He hecho una prueba con este html en vez de cargar la página. Código:
<t>115451</t><t>fgfdgdfg<dfg/tdfdsf>fdgfdnkjghrehiu4yi5yuihgfjdrgjkbdfnjgkndfjkngjkndfkjgnkjdfnjkgjkdfngjkdnfjkgkjdfngh<t>45345456gdf</t><t>wwwwwwwwwwwwwwwww</t> <t>00000000</t><t>534fdgfd45345</t><t>gdfdfg</t> <t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t> <t>24981vvvvvvvvv</t> <t>21f5f1eeeeeeeeee</t> Código:
<t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> <t>115451</t> // El primer valor repetido 7 veces. No se, quizá pueda ser algo relacionado con el formato de html? Es que parece como si no incrementara el indice y parara nada mas encontrar la primera. Yo sigo probando y probando, pero si se te ocurre alguna cosa, te lo agradecería. Gracias. Última edición por nlsgarcia fecha: 11-03-2015 a las 20:15:39. Razón: Sintaxis Delphi |
#6
|
||||
|
||||
Jovalca,
Cita:
Pregunto: 1- ¿Que versión de Windows utilizas?, ¿Es de 32 o 64 bits?. 2- ¿Que versión de Delphi utilizas?. 3- ¿Estas usando la librería Synapse para obtener la página web?. 4- ¿Cuales son los parámetros de búsqueda en SearchParams?. 5- ¿Cual es la página real que quieres obtener?. 6- ¿Haz realizado un Debug a tu aplicación para verificar su funcionamiento?. Espero sea útil Nelson. |
#7
|
||||
|
||||
Hola Jovalca
Cita:
Código:
<t>115451</t> Código:
115451
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta SQL devuelve valor erroneo | satelit | SQL | 6 | 18-04-2014 19:40:59 |
Store Procedure solo devuelve un registro | Rockin | Firebird e Interbase | 2 | 17-10-2011 18:43:31 |
RecNo devuelve valor -1 | jandok238 | MySQL | 1 | 27-11-2009 22:01:23 |
Uso de SUSPEND; Solo cuando el SP devuelve valores | Paoti | Firebird e Interbase | 1 | 27-05-2006 07:16:57 |
Select Max siempre devuelve valor | FernanGil | Conexión con bases de datos | 3 | 06-10-2003 15:55:36 |
|