Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2005
Kamikaze Kamikaze is offline
Miembro
 
Registrado: abr 2004
Posts: 30
Poder: 0
Kamikaze Va por buen camino
Question ¿Convertir los caracteres ASCII del ClientSocket.Socket.ReceiveText?

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.

Muchas gracias por adelantado!!!
Archivos Adjuntos
Tipo de Archivo: zip ejemplo.zip (934 Bytes, 40 visitas)
Responder Con Cita
  #2  
Antiguo 09-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
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:

Código Delphi [-]
ListBox1.Items.Delimiter := #algo; // nose cual es, fijate con un editor hexa o buscalo por ahi
ListBox1.Items.DelimitedText := TextoRecibido;

Espero que te ayude

Suerte
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 09-07-2005
Kamikaze Kamikaze is offline
Miembro
 
Registrado: abr 2004
Posts: 30
Poder: 0
Kamikaze Va por buen camino
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

¿Pero para un numero hexa no se utiliza $ ?
Si pongo # me pone "mising operator o semicolon"
Si pongo $ me pone que es incompatible char e integer...

¿Sabes que es lo que pasa?

Última edición por Kamikaze fecha: 09-07-2005 a las 19:35:09.
Responder Con Cita
  #4  
Antiguo 09-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
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.
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 10-07-2005
Kamikaze Kamikaze is offline
Miembro
 
Registrado: abr 2004
Posts: 30
Poder: 0
Kamikaze Va por buen camino
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:
 procedure TForm1.ClientSocket1Read 
Le digo que, lo que lea lo pase a una String determinada
Código PHP:
 var
str:AnsiString;
begin
   str
:= Socket.ReceiveText
Y luego le digo que lo escriba en un memo
Código PHP:
 memo1.Lines.Add(str); 

Yo recibo el codigo fuente de la pag por que previamente
le envié con el
Código PHP:
 TForm1.ClientSocket1Connect 
Este texto:
Código PHP:
procedure TForm1.ClientSocket1Connect(SenderTObject;
  
SocketTCustomWinSocket);
begin
   with ClientSocket1 
do begin
Socket
.SendText('POST /game/reg/login2.php HTTP/1.0'+#13#10);
Socket.SendText('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*'+#13#10);
Socket.SendText('Referer: [url="http://ogame159.de/portal/?lang=es'+#1310"]http://ogame159.de/portal/?lang=es'+#13#10[/url]);
Socket.SendText('Accept-Language: es'+#13#10);
Socket.SendText('Content-Type: application/x-www-form-urlencoded'+#13#10);
Socket.SendText('Proxy-Connection: Keep-Alive'+#13#10);
Socket.SendText('User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)'+#13#10);
Socket.SendText('Host: ogame192.de'+#13#10);
Socket.SendText('Content-Length: 84'+#13#10);
Socket.SendText('Pragma: no-cache'+#13#10);
Socket.SendText(''+#13#10);
Socket.SendText('timestamp=1120575910&v=2&Uni=ogame192.de&login=XX&pass=XX&x=24&y=6'+#13#10);
Socket.SendText(''+#13#10);
Socket.SendText(''+#13#10);
   
end;
end
Todo ello por el puerto 80 y al host ogame192.de

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,
pero no cambian de linea!!!!
Asi podria yo decirle al programa la linea exacta que me interesa
pasarla a un edit y ya esta.


Muchas gracias por todo!!!!
Responder Con Cita
  #6  
Antiguo 10-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
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
__________________
[Crandel]
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


La franja horaria es GMT +2. Ahora son las 19:49:26.


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