Como Filtrar Links

Delphi

10/06/2009

Olá senhores,

Eu gostaria fazer o seguinte; tenho um Memo1 com um codigo HTML, e gostaria de saber como pegar somentes os links(http://meusite.com.br/) deste código que está no Memo1 e jogar no Memo2. Como faço?? não consigo desenvolver isto sozinho :(

Att,

Gabriel Grisi


Gabrielgrisi

Gabrielgrisi

Curtidas 0

Respostas

Andepunk

Andepunk

10/06/2009

Olá senhores, Eu gostaria fazer o seguinte; tenho um Memo1 com um codigo HTML, e gostaria de saber como pegar somentes os links(http://meusite.com.br/) deste código que está no Memo1 e jogar no Memo2. Como faço?? não consigo desenvolver isto sozinho :( Att, Gabriel Grisi


Seguinte: voce gostaria de pegar a linha que contem um site ou pegar exatamente a linha q contem um site e capturar o site?

se for pegar a linha toda que contem um site voce pode fazer assim:

declare a variavel I como Integer

//pega o numero total de linhas
For I:=0 To Memo1.lines.count-1 Do
// a funcao pos se encontrar o texto http:// retorna a posicao que esta o //texto sendo assim >0 
   if Pos(´http://´, Memo1.Lines.Strings[I]) > 0 Then
      //repassa a linha que contem o link para o memo2
      Memo2.Lines.Add(Memo1.Lines.Strings[I]);

nao compilei o codigo aqui pq neste maquina nao tem o delphi, mas se nao der certo me retorna que eu arrumo o procedimento.

Anderson de Oliveira


GOSTEI 0
Gabrielgrisi

Gabrielgrisi

10/06/2009

Obrigado pela atenção Anderson, mas não deu certo.. veja como ficou no memo2;

href=´http://imag
href=´http://map
href=´http://new
href=´http://ww
href=´http://grou
href=´http://mail.
href=´http://ww

gostaria que fosse só o http:// com o restante ... entendeu ? valeu ;)


GOSTEI 0
Andepunk

Andepunk

10/06/2009


//pega o numero total de linhas 
For I:=0 To Memo1.lines.count-1 Do 
// a funcao pos se encontrar o texto http:// retorna a posicao que esta o //texto sendo assim >0 
   if Pos(´http://´, Memo1.Lines.Strings[I]) > 0 Then 
      //repassa a linha que contem o link para o memo2 
      Memo2.Lines.Add(StringReplace(´href="´, Memo1.Lines.Strings[I],[]); 




GOSTEI 0
Andepunk

Andepunk

10/06/2009

assim vai remover o texo (href=´´)

//pega o numero total de linhas 
For I:=0 To Memo1.lines.count-1 Do 
// a funcao pos se encontrar o texto http:// retorna a posicao que esta o //texto sendo assim >0 
   if Pos(´http://´, Memo1.Lines.Strings[I]) > 0 Then 
      //repassa a linha que contem o link para o memo2 
      Memo2.Lines.Add(StringReplace(´href="´, Memo1.Lines.Strings[I],[])); 




GOSTEI 0
Gabrielgrisi

Gabrielgrisi

10/06/2009

[Error] Unit1.pas(93): Incompatible types: ´String´ and ´Set´

então.. deu erro no final desta linha

Memo2.Lines.Add(StringReplace(´href=´´, Memo1.Lines.Strings[I],[]));

O que seria?

Outra coisa .. se nao for pedir demais, como seria pra colocar um progressbar e ir colocando as linhas no memo e rolando o progressbar ..

:)


GOSTEI 0
Andepunk

Andepunk

10/06/2009

mete ficha que agora vai funcionar com o progress.
procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   mDescricao : Boolean;
begin
//limpa memo2
Memo2.clear;

//define o maximo para o progress
ProgressBar1.Max := Memo1.lines.count;
//pega o numero total de linhas
For I:=0 To Memo1.lines.count-1 Do
begin
// a funcao pos se encontrar o texto http:// retorna a posicao que esta o //texto sendo assim >0
   if Pos(´http://´, Memo1.Lines.Strings[I]) > 0 Then
      //repassa a linha que contem o link para o memo2
      Memo2.Lines.Add(StringReplace(Memo1.Lines.Strings[I],´href="´,´´,[rfReplaceAll, rfIgnoreCase]));
      //incrementa o progess a cada lnha percorrida
      ProgressBar1.Position := I;
end;

end;



GOSTEI 0
Gabrielgrisi

Gabrielgrisi

10/06/2009

http://imag
http://map
http://new
http://ww
http://grou
http://mail.
http://ww
http://boo


Continua nao pegando o link completo hehehe :(


GOSTEI 0
POSTAR