Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2015
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Gracias ecfisa por tu respuesta.

La he probado y ahora si que devuelve todos los resultados. Si que había pensado en meter el bucle en la función a ver si hacía algo, pero entre probar y no probar cosas al final se me pasó.

Gracias por tu tiempo y tu ayuda. Lo que me ocurre ahora es que este "filtro" para obtener etiquetas, le tengo que aplicar varias veces con distintas etiquetas, para ir quedándome sólo con el código que me interesa. Lo que ocurre es que según le voy aplicando, los resultados cada vez son menos coherentes y extrae junto con las etiquetas que necesito, otras tantas que no debería y en una ordenación confusa.

Lo que creo que ocurre es que cuando la cadena de texto está bien separadas por lineas, funciona bien. Pero en cambio, el código fuente de las paginas que obtengo, va con etiquetas que se abren y cierran en lineas distintas y por decirlo de alguna manera, está todo mezclado.

Voy a ver si consigo hacer una función que recorra el texto completo del código fuente, haciendo saltos de linea en cada cierre de etiqueta, es decir ">" para así tener en cada línea una etiqueta y a ver si con esto obtengo unos resultados mejores.

Gracias de nuevo por tu tiempo.
Saludos.
Responder Con Cita
  #2  
Antiguo 14-03-2015
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Hola de nuevo.

He estado probando a hacer lo que comentaba en el mensaje anterior (hacer salto de linea en cada ">"), puesto que el código fuente que obtengo viene de esta forma y no creo que sea adecuado para manipularlo en un TStringList:

Código:
<!DOCTYPE html><html><head><meta charset="utf-8" /><title>Well MP3 Download: FREE Music</title><meta name="description" content="well FREE Mp3 Download & well Songs. Download And Listen Top well Music,  Songs & MP3s. Download well With MP3 search for Top Songs and Music." /><meta name="keywords" content="well mp3, well download, free music" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="author" content="MP3Juices" /><link rel="shortcut icon" type="image/x-icon" href="http://mp3juices.to/favicon.ico"><link rel="stylesheet" type="text/css" href="http://static.mp3juices.to/stylesheet.min.css" /><script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><script type="text/javascript" src="http://static.mp3juices.to/scripts.js?wow=1"></script><script>(function(i,s,o,g,r,a,m){i["GoogleAnalyticsObject"]=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,"script","//www.google-analytics.com/analytics.js","ga"); ga("create", "UA-43693247-1", "auto"); ga("send", "pageview"); </script></head><body><!-- Tag - Site-Under --><script async="true" src="//s.ad2387.com/script.js?i=876191"></script><!-- Tag - END --><!-- Tag - Top banner --><script async="true" src="//s.ad2387.com/script.js?i=876193"></script>
Y hasta ahora he conseguido esto:

Código Delphi [-]
      PageSource:= TStringList.Create; // creo un stringlist
      PageSource.LoadFromStream(LoadPage); //Cargo el codigo fuente desde un TMemoryStream
      LoadPage.Free;
      for SourcePos:= Length(PageSource.Text) downto 0 do // Como no es adecuado para cargarlo por lineas, lo cargo como una sola cadena
      begin
        if PageSource.Text[SourcePos] = '>' then // Si el index actual de la cadena es igual a '>' entonces
          PageSource.Insert(SourcePos + 1, #13 + #10); //en el index actual + 1 inserto el salto de linea
      end;

Pero con esto me devuelve un error "List index () out of bounds"...
Si pruebo con PageSource.ToString me devuelve un error "Access Violation"
También he probado con el bucle for:

Código Delphi [-]
for SourcePos:= 1 to Length(PageSource.Text) do

Pero obtengo los mismos errores.

La verdad no se si puede manipular un TStringList así y tampoco he encontrado ejemplos claros de como hacerlo.
¿Quizá debería cargar el código de otra forma?

Gracias por cualquier ayuda.
Saludos.
Responder Con Cita
  #3  
Antiguo 14-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jovalca.

Cita:
Empezado por Jovalca Ver Mensaje
Lo que ocurre es que según le voy aplicando, los resultados cada vez son menos coherentes y extrae junto con las etiquetas que necesito, otras tantas que no debería y en una ordenación confusa.
...
Voy a ver si consigo hacer una función que recorra el texto completo del código fuente, haciendo saltos de linea en cada cierre de etiqueta, es decir ">" para así tener en cada línea una etiqueta y a ver si con esto obtengo unos resultados mejores.
Entiendo el problema, pero no sé si será la solución... De todos modos para insertar los saltos de línea yo haría:
Código Delphi [-]
procedure InsertCRLF(var Text: string; const Ch: Char);
const
  CRLF = #$D#$A;
var
  i: Integer;
begin
  i:= 0;
  while i < Length(Text) do
  begin
    if Text[i] = Ch then
    begin
      Insert(CRLF, Text, i+1);
      Inc(i, Length(CRLF));
    end
    else
     Inc(i);
  end;
end;

Prueba:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  s : AnsiString;
begin
  with TStringList.Create do
  try
    LoadFromFile('c:\tmp\Jovalca.txt');
    s:= Text;
  finally
    Free;
  end;
  Memo1.Text:= s;
  InsertCRLF(s,'>');
  Memo2.Text:= s;
end;

Salida:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 14-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Jovalca,

Cita:
Empezado por Jovalca
...La verdad no se si puede manipular un TStringList así y tampoco he encontrado ejemplos claros de como hacerlo...


Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
  #5  
Antiguo 14-03-2015
Jovalca Jovalca is offline
Miembro
NULL
 
Registrado: sep 2013
Ubicación: Madrid - España
Posts: 30
Poder: 0
Jovalca Va por buen camino
Mil Gracias a los dos de nuevo.

Pero cierto, parece que no es la solución ya que ahora después de ordenar el código así, vuelve a darme solo un resultado al extraer las etiquetas con la función.

Gracias de cualquier modo por vuestra ayuda. Voy a plantearme este proyecto desde cero a ver que saco en claro.

Saludos.
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
Consulta SQL devuelve valor erroneo satelit SQL 6 18-04-2014 19:40:59
Store Procedure solo devuelve un registro Rockin Firebird e Interbase 2 17-10-2011 18:43:31
RecNo devuelve valor -1 jandok238 MySQL 1 27-11-2009 22:01:23
Uso de SUSPEND; Solo cuando el SP devuelve valores Paoti Firebird e Interbase 1 27-05-2006 07:16:57
Select Max siempre devuelve valor FernanGil Conexión con bases de datos 3 06-10-2003 15:55:36


La franja horaria es GMT +2. Ahora son las 14:24:24.


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