Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
Antiguo 10-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
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
  #3  
Antiguo 10-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si tu versión de Delphi cuenta con la función AdjustLineBeaks, supongo que bastará que pongas:


Código Delphi [-]
str:= AdjustLineBreaks(Socket.ReceiveText);

// Saludos
Responder Con Cita
  #4  
Antiguo 10-07-2005
Kamikaze Kamikaze is offline
Miembro
 
Registrado: abr 2004
Posts: 30
Poder: 0
Kamikaze Va por buen camino
Muchas gracias!!!!!!!

¿Alguien sabe donde me puedo informar
para que el Socket.ReceiveText
me envie linea por linea?

Asi podria recoger que linea necesito
mas rapidamente.

Muchas gracias por todo!!!!!!!



P.D.:Si no os molesta os colocaré dentro de la sección
de autores.
Responder Con Cita
  #5  
Antiguo 11-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Cita:
Empezado por roman
str:= AdjustLineBreaks(Socket.ReceiveText);
interesante función Roman,no la conocia.

Cita:
Empezado por Kamikaze
P.D.:Si no os molesta os colocaré dentro de la sección de autores.
no creo que nadie se enoje, pero creo que nos queda grande. Si realmente quieres nombrarnos,sería mas justo como colaboradores o algún titulo por el estilo.

En resumen, para obtener tus líneas puedes hacer lo siguiente:

Código Delphi [-]
var
  Lineas: TStringList;
begin
  Lineas = TStringList.Create;
  .....
  .....
  Lineas.Add(AdjustLineBreaks(Socket.ReceiveText));
  .....

y finalmente tenes separado por lineas !!!!
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 11-07-2005
Kamikaze Kamikaze is offline
Miembro
 
Registrado: abr 2004
Posts: 30
Poder: 0
Kamikaze Va por buen camino
Hola Crandel !!!

Perdona, pero no entiendo el pedazo de codigo
que me colocastes en el anterior post.

¿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.
Responder Con Cita
  #7  
Antiguo 11-07-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
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:

Código Delphi [-]
Edit1.Text := Lineas.Strings[NumeroLinea];

Suerte
__________________
[Crandel]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 10:42:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi