![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola Al.
Mira, la página en cuetión seria esta http://casacimar.com.bo/tarea.html ahora mi script es este
Ahora como podrás ver solo me copia un poco mas de la mitad del html en el memo, eso a que se debe ? o como puedo hacer que me lo copie TODO el html ? saludos! |
|
#2
|
||||
|
||||
|
Hola,
No sé realmente porqué ocurre, porque, los navegadores que he probado "pueden con ello", pero, en el archivo en cuestión parece darse un problema en la línea 191, columna 7. En ese punto puede verse lo siguiente (examinando el código fuente desde Firefox): Código:
<td ?owrap align=right> He probado a usar WinInet (tal como muestra seoane), pero, sigue produciéndose el mismo problema. También he probado con "UrlMon.URLDownloadToFile()", pero, igual, el mismo caso. Pero, para usar URLMon he tenido que descargar un archivo, y me ha dado por revisarlo... y, efectivamente, se descarga el código completamente (superando el error que contiene el archivo HTML), y entonces me he dicho, leche, pues es el Memo, que no puede mostrar el código fuente a partir del "error" (línea 191, etc.). Pero no... no es del todo el Memo. Porque si pruebas con algo como esto:
... verás que tampoco descargas todo el código fuente del archivo, sino que se "queda" en el punto exacto del supuesto error. Vale. ¿Y entonces qué? Pues el caso es que el archivo se descarga completamente. Fíjate que viene a ocupar unos 12 KB, y estas son las cabeceras que envía la respuesta HTTP: Código:
Date: Thu, 27 Sep 2007 02:05:00 GMT Server: NOYB Last-Modified: Thu, 27 Sep 2007 01:05:42 GMT ETag: "32c454-3139-91b7c580" Accept-Ranges: bytes Content-Length: 12601 Content-Type: text/html Por el momento no se me ocurre qué más hacer. Si tengo que quedarme con algo... tal vez con URLMon, puesto que consigue descargar el archivo completo... ¡pero IdHTTP también, lo que ocurre es que no hay manera de obtener el contenido más allá de donde se localiza el error del archivo y por tanto no podemos guardarlo (como hace URLMon... por su cuenta... a saber cómo)! Y, por otro lado... de qué te serviría tener el archivo con su contenido completo (aunque erróneo, o problemático, cuando menos), si no hay manera de cargarlo en un Memo, por ejemplo... Pero yo lo dejo aquí, por el momento, a ver si alguien a partir de esto puede aportar alguna otra cosa. Si a mí se me ocurre alguna la comentaré por aquí. Siento no poder dar una respuesta válida, pero, espero al menos que se entendiera el rollo que he soltado, que, puesto que he ido escribiéndolo según hacía pruebas, lo mismo no ha quedado del todo "cuadrado". ![]() Última edición por dec fecha: 27-09-2007 a las 04:23:20. |
|
#3
|
||||
|
||||
|
Creo que se trata del típico caso del carácter ASCII 0 (#0). Si una cadena (String) lo contiene, Delphi lo toma como fin de la misma al utilizar dicha cadena como expresión en cualquier sentencia.
En este caso a Demonio Negro le convendría usar la versión sobrecargada:
Y obtener la respuesta en un flujo (stream) de tipo TMemoryStream, el cual es mejor que una variable String para manejar cualquier cadena de bytes textual o binaria. Estoy casi seguro que esa es la situación que se presenta. No dejes de comentarnos cómo te fue. ![]() Un abrazo binario. Al González. ![]() Última edición por Al González fecha: 27-09-2007 a las 20:00:54. Razón: Dejar claro que ASCII 0 = #0 ;) |
|
#4
|
||||
|
||||
|
Hola,
Ops... me temo que también probé de esa forma Al... a lo menos con un "TStringStream"... pero, no funcionó... tal vez porque no sea el "flujo" indicado... ![]() |
|
#5
|
||||
|
||||
|
Cita:
, prueba con TMemoryStream y dime cuál es el valor de los dos últimos bytes del flujo. |
|
#6
|
||||
|
||||
|
Hola,
Me temo que no voy a poder hacer lo que me dices Al... no llego a tanto. Lo que es seguro es que haciendo algo así:
Efectivamente, en "t" contamos con el contenido del archivo que nos interesa: todo el contenido, es decir, que si guardo "t" en un archivo... en este se verá todo el código fuente del documento HTML en cuestión. Ahora bien... ¿cómo poner en un Memo el contenido de "t"? Ni idea... con "Memo1.Lines.LoadFromStream(t)" no funciona tal como espero..., por ejemplo, aunque, me temo que pasará igual que antes: que el Memo no podrá mostrar más allá de donde se encuentra el problema en el archivo... |
|
#7
|
||||
|
||||
|
Hola,
Pero hay que decir una cosa... supongamos esto:
O incluso simplemente esto:
En ambos casos exclamaremos eureka,... y lo que se está buscando está al final del contenido en cuestión... más allá del error, lo que quiere decir que al cabo, al cabo, estamos descargando todo el HTML, salvo que no podemos mostrarlo en un Memo... por ejemplo, pero,... tal vez esto sea lo de menos, en un momento dado. O dicho de otro modo, tal vez nos baste con el código HTML descargado, y a partir de ahí trabajar, lo mismo no es necesario mostrarlo en un Memo, sino que el compañero lo hacía por "probar", pero, en la práctica, ya digo, a lo mejor no es necesario hacerlo, porque, si se busca algo... puede buscarse directamente en la cadena que contiene el HTML, no es preciso que esté en un Memo. Última edición por dec fecha: 27-09-2007 a las 06:51:31. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| StringList: Modificar un item en particular | NEG1414 | C++ Builder | 3 | 25-08-2007 20:26:50 |
| Problema con StringList | MaMu | Varios | 2 | 26-05-2007 21:40:45 |
| Llenar datos en StringList | Caro | OOP | 2 | 12-11-2005 17:20:57 |
| Recorrer un StringList | bustio | Varios | 2 | 27-02-2005 19:50:21 |
| Limite del StringList | victork_py | Varios | 8 | 11-05-2004 22:19:11 |
|