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 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
  #2  
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
  #3  
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
  #4  
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 19:37:33.


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