Localizar Links
Utilizo essas funcoes para filtrar links em um memo :
Utilizo ela dessa maneira :
O programa esta multi-thread, e quando o programa comeca rodar, consome muita memoria! Tem alguma outra forma ou funcao pra filtrar links ? nao encontrei no forum
//Para capturar apenas o que estiver como valor em href= function TrataLink(ALink: String): String; var P : Integer; Limite : Char; S : String; begin P := Pos(´href=´, ALink); if P > 0 then begin Inc(P, 5); if ALink[P] in [39, 34] then begin Limite := ALink[P]; Inc(P); end else Limite := ´>´; for P := P to Length(ALink) do if ALink[P] <> Limite then S := S + ALink[P] else Break; Result := S; end; end; //Captura tags procedure CapturaLinks(AHTML: String; ALista: TStrings); var P,X : Integer; S, Link : String; begin S := AHTML; S := StringReplace(S,13,´´,[rfReplaceAll]); S := StringReplace(S,#10,´´,[rfReplaceAll]); S := AnsiLowerCase(S); repeat P := Pos(´<a´, S); if P > 0 then begin S := Copy(S, P+3, Length(S)); for X := 1 to Length(S) do if S[X] <> ´>´ then Link := Link + S[X] else begin Link := TrataLink(Link); ALista.Add(Link); Break; end; end; Link := ´´; until P = 0; end;
Utilizo ela dessa maneira :
CapturaLinks(HTML, Memo1.Lines);
O programa esta multi-thread, e quando o programa comeca rodar, consome muita memoria! Tem alguma outra forma ou funcao pra filtrar links ? nao encontrei no forum
Bertu
Curtidas 0
Respostas
Bertu
29/08/2009
up
GOSTEI 0
Bertu
29/08/2009
up
GOSTEI 0
Emerson Nascimento
29/08/2009
você está manipulando um Memo.
esta manipulação precisa estar numa área restrita da thread ou ser chamada através do método de sincronismo da thread (synchronize).
veja [url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=14097]neste artigo[/url] como tratar a manipulação de um objeto que não é thread-safe.
veja se isso resolve o problema de consumo excessivo de memória.
esta manipulação precisa estar numa área restrita da thread ou ser chamada através do método de sincronismo da thread (synchronize).
veja [url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=14097]neste artigo[/url] como tratar a manipulação de um objeto que não é thread-safe.
veja se isso resolve o problema de consumo excessivo de memória.
GOSTEI 0
Bertu
29/08/2009
obrigado pela resposta emerson, mais o consumo de memoria nao tem haver com essa função nao ? acho que o problema esta naquele for percorre letra por letra, pq imagina 10 threads fazendo isso! vou tentar ver esse artigo, vc sabe outra forma de filtrar esses links ? nao precisa ser necessariamente um memo....
GOSTEI 0
Bertu
29/08/2009
up
GOSTEI 0