![]() |
¿Convertir los caracteres ASCII del ClientSocket.Socket.ReceiveText?
1 Archivos Adjunto(s)
Hola a todos, foreros.
Mi duda es la siguiente: ¿Se pueden convertir los caracteres ASCII recividos del "ClientSocket.Socket.ReceiveText" en caracteres normales (el texto recivido es html)? Es decir, que en vez de salir un "cuadrado blanco", salga el intro (salto de pagina). Lo que pretendo hacer es una aplicacion que recoja un html usando el socket.recibetext, que este guarde lo recibido en un archivo txt, y por ultimo decirle al programa que cargue una determinada linea del archivo (;) si alguien sabe un metodo mas directo mejor;) ) y la meta en un edit. :( Pero el problema que tengo es que al no saltar de linea, lo que me carga en el edit es un monton de basura.:( Os dejo el archivo txt de lo que me guarda por si alguien no me entendio. :D Muchas gracias por adelantado!!!:D |
Por lo que vi en tu archivo lo estas recibiendo bien, bueno, casi.
El problema son los caracteres "intro" como decis. El tema que estos caracteres por algun motivo lo estas recibiendo como el caracter intro de Linux. Para visualizar la pagina web no creo que tengas problemas, pero si tu interes es procesarlo, posiblemente si. Tendrías dos posibilidades, recorrer el archivo, modificando este caracter. o directamente podes cambiar el caracter delimitador, y manipularlo con el listbox:
Espero que te ayude Suerte |
Por si alguien le paso lo mismo que a mi el caracter
intro en hex es = 0A y en Dec= 10 Se podria hacer lo mismo en un memo? Muchas gracias Crandel :confused: ¿Pero para un numero hexa no se utiliza $ ?:confused: Si pongo # me pone "mising operator o semicolon":( Si pongo $ me pone que es incompatible char e integer...:( ¿Sabes que es lo que pasa? |
De que forma envias el texto del archivo?
linea por linea? porque ahi es donde te puede estar desapareciendo los enter. Si la idea es enviar el archivo entero es mejor usar un protocolo FTP, que para eso se diseño. |
Hola Crandel !!!
El texto html me lo bajo de una pag web (el codigo html es la pag). Yo recibo ese codigo mediante la función Código PHP:
Código PHP:
Código PHP:
Yo recibo el codigo fuente de la pag por que previamente le envié con el Código PHP:
Código PHP:
Me interesaria muchisímo saber como puedo recivir linea por linea el texto recogido por el scoket, por que asi me ahorraria un monton de trabajo a la hora de programar y aumentaria la velocidad de mi programa, ya que todo el texto recogido por el socket es solamente para recoger unas determinadas cadenas de numeros, que se repiten una sola vez pero que cada 5 minutos cambian, :p pero no cambian de linea!!!!:p Asi podria yo decirle al programa la linea exacta que me interesa pasarla a un edit y ya esta. :D Muchas gracias por todo!!!!:D |
Hola Kamikaze, muy interesante lo que haces, simulas ser un navegador para bajarte la pagina web.
El tema es que te esta mandando la pagina, pero con el fin de línea de Linux, que es sólo 0AH (10 dec). En cambio en Windows es #13#10. Igualmente si lo abris al archivo directamente como queres con el Memo, no tenes problemas, te separa correctamente las lineas. Probalo |
Si tu versión de Delphi cuenta con la función AdjustLineBeaks, supongo que bastará que pongas:
// Saludos |
:D Muchas gracias!!!!!!!:D
¿Alguien sabe donde me puedo informar para que el Socket.ReceiveText me envie linea por linea? Asi podria recoger que linea necesito mas rapidamente. :D Muchas gracias por todo!!!!!!!:D P.D.:Si no os molesta os colocaré dentro de la sección de autores. |
Cita:
Cita:
En resumen, para obtener tus líneas puedes hacer lo siguiente:
y finalmente tenes separado por lineas !!!! |
:D Hola Crandel !!! :D
Perdona, pero no entiendo el pedazo de codigo que me colocastes en el anterior post. :confused: ¿Me lo podrías poner en algun contexto para que pudiera ver la función de este, por favor? Una cosa, odio hacer categorias con respecto a la gente, si me ha ayudado, igualmente es uno de los creadores aunque yo lo compile, ya que sin vuestro apoyo no existiría el programa.;) |
Hola Kamikaze,
El TStringList, como su nombre lo indica, es una lista de string. La primera parte del ódigo que escribí es solo la declaración y la creación del objeto, no tiene más. El método Add, permite agregar texto al objeto, en este caso agregamos todo lo que recibiste desde Socket.ReceiveText. Pero como a vos te interesa previamente convertir los caracteres de fin de línea para que sean compatible con windows usamos la función AdjustLineBreaks. De esta forma tenemos cargado nuestro StringList, con todo el texto de la pagina web separada en líneas como querias. Luego puedes acceder a la línea que te interese:
Suerte |
:D Ahora lo comprendo, gracias por todo Crandel!!! :D
Pero creo que el programa delphi no.... ;) Me sale un error: "Project Project1.exe raised exception class EStringListError with message 'List index out of bounds (1)' " |
chekeaste no estar leyendo una línea que no existe?
|
:( He provado con mas de 25 lineas existentes y siempre me aparece lo mismo:(
|
|
:D Hola otra vez!!!:D
¿Tendría que quedar más o menos asi? Es que me sale un error: :( "Incompatible types: 'TStrings' and 'String' ":( Código PHP:
|
Mmmmm... AddStrings requiere que el parámetro pasado sea un TStrings, por lo que Add es el método apropiado para el resultado de la función AdjustLineBreaks.
|
Solo comentar que usar AdjustLineBreaks antes de asignar los
textos a un TStrings es marear la perdiz, una perdida de ciclos de cpu ya que no es necesario. Un objeto TStrings o derivado de él como un TStringList o el mismo Lines de un TMemo, entiende perfectamente y separa las lineas de los textos que tengan solo el caracter #10 o solo el caracter #13. De modo que basta asignar el contenido al TStrings (con Add por ejemplo) y listo. Saludos |
El problema es que con Add, lo agrega en una sóla linea a todo el texto.
El memo lo reconoce perfectamente, pero no se porque el StringList no. Dentro de un ratito lo pruebo y te comento |
Cita:
Otra es armando una funcioncita para poder usar AddStrings
Cita:
Saludos! |
La franja horaria es GMT +2. Ahora son las 18:22:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi