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 27-09-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.621
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

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:

Código Delphi [-]
procedure Get(AURL: string; const AResponseContent: TStream);

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 ;)
Responder Con Cita
  #2  
Antiguo 27-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
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...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 27-09-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.621
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

Cita:
Empezado por dec Ver Mensaje
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...
Bueno, ya que andas despierto tan temprano , prueba con TMemoryStream y dime cuál es el valor de los dos últimos bytes del flujo.
Responder Con Cita
  #4  
Antiguo 27-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
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í:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  t: TMemoryStream;
begin
  t := TMemoryStream.Create();
  try
    IdHTTP1.Get('http://casacimar.com.bo/tarea.html',t);

    {...}

  finally
    t.Free();
  end;
end;

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...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 27-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.145
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Pero hay que decir una cosa... supongamos esto:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  t: TStringStream;
begin
  t := TStringStream.Create('');
  try
    IdHTTP1.Get('http://casacimar.com.bo/tarea.html',t);

    if Pos('Copyright ©', t.DataString) <> 0 then
      ShowMessage('Eureka!');

  finally
    t.Free();
  end;
end;

O incluso simplemente esto:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  s: string;
begin
  s := IdHTTP1.Get('http://casacimar.com.bo/tarea.html');
  if Pos('Copyright ©', s) <> 0 then
    ShowMessage('Eureka!');
end;

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.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 27-09-2007 a las 06:51:31.
Responder Con Cita
  #6  
Antiguo 27-09-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.621
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

Tienes toda la razón David.

BlackDaemon: ¿servido?

Un abrazo.

Al González.
Responder Con Cita
  #7  
Antiguo 27-09-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Vaya, aquí los dos maestros ya tuvieron en cuenta todo, la codificación, los ceros cabroncetes, la solución de los streams ... así no hay quien meta baza.

Yo lo que haría seria bajar la pagina a un stream, usando Indy, wininet o lo que prefieras, y luego utilizar utf8Decode para convertir la pagina de utf8 a una codificación normal.
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

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


La franja horaria es GMT +2. Ahora son las 09:48:08.


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