Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 12
  1. #1
    Wannabe
    Data de Ingresso
    Feb 2005
    Localização
    Sampa
    Posts
    815

    Função Copy e Pos

    Boa tarde Fórum Invaders, (Digam: Boa tarde Apostilas na Web).. rs

    Estou tentando pegar uma parte do conteúdo HTML de um site( O meu site ), porem não estou conseguindo, estou utilizando um código que eu encontrei na internet, tentei fazer algumas modificações, porem sem sucesso.

    Código:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     sString: String;
     sString2: String;
    begin
     sString := IdHTTP1.Get('http://www.apostilasnaweb.com');
     sString2 := Copy(sString, Pos('<span>', sString) + Length('</span>'), Length('</span></a>'));
     ShowMessage(sString2);
    end;
    E no meu código HTML esta assim:

    Código:
    <div id="ja-logo">
    	<h1 class="logo">
    		<span>Apostilas na Web - Seu Portal de Apostilas</span>
    	</h1>
    
    	</div>
    Conforme a minha busca no código em delphi, eu quero pegar esse texto Apostilas na Web - Seu Portal de Apostilas


    Quando clico no button, ele me retorna a seguinte mensagem



    Eu quero que no ShowMessage(sString2); me apareça a mensagem Apostilas na Web - Seu Portal de Apostilas.

    Abraços a todos

  2. #2

    Re: Função Copy e Pos

    Função Pos :

    Pos( substring, string );
    O Pos vai te retornar a posição da substring na string .. por exemplo :

    Pos( 'x', 'abcXdef' );

    Pos será igual a 4


    Copy( string, posição inicial, quantidade ou tamanho );
    O Copy vai te retornar a cópia da string da posição inicial contando em diante com a quantidade

    tente assim :

    //deixa essa função em cima da sua procedure
    function RetornaLengthFim( PosicaoInicial : integer; sStr : string) : string;
    var
    i : integer;
    stringGerada : string;
    begin
    stringGerada := '';
    Result := '';

    for i := PosicaoInicial to Length(sStr) do
    begin
    if not (sStr[i] = '"') then
    stringGerada := stringGerada + sStr[i]
    else
    break;
    end;
    Result := stringGerada;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    sString : String;
    sString2 : String;
    begin
    sString := IdHTTP1.Get('http://www.apostilasnaweb.com');
    sString2 := Copy(sString, Pos('title=', sString)+7, Length(RetornaLengthFim(Pos('title=', sString)+7,sString)));
    ShowMessage(sString2);
    end;

    a função vai pegar o proximo " depois da posição inicial do copy na string para identificar o final do titulo ..
    não sei quais alterações podem ser feitas no cod em html :S por isso fiz um cod que funcionasse em qualquer opção..
    testa ae XD

    obs : fiz os testes com o seu código HTML que vc passo

  3. #3
    Membro
    Data de Ingresso
    Dec 2007
    Posts
    297

    Re: Função Copy e Pos

    eu fiz assim


    var
    s,b: String;
    sString2: String;
    begin
    s := IdHTTP1.Get('http://www.apostilasnaweb.com');
    if pos('<a href="/index.php" title="',s) > 0 then
    sString2 := copy(s,pos('<a href="/index.php" title="',s) + length('<a href="/index.php" title="'), length(s)-1);
    b:= copy(sstring2,1,pos('">',sstring2)-1);
    ShowMessage(b);
    end;


    eAKienAUHNe

  4. #4

    Re: Função Copy e Pos

    É q ele pode mudar o cód HTML então o certo seria uma função q pega do title até o final dele...
    Se ele muda o cod do jeito q tu fez n vai funfa pq se uso um " if " e o cod q ele pode colocar é imprevisivel


    Obs : não sei qual cód em HTML ele pode colocar ASUHASUHAASH, mais sei q pode ser mudado

  5. #5
    Wannabe
    Data de Ingresso
    Feb 2005
    Localização
    Sampa
    Posts
    815

    Re: Função Copy e Pos

    Obrigado pela respostas, chegando em casa eu vou testar e coloco o resultado aqui !

    abraços

  6. #6
    Membro
    Data de Ingresso
    Dec 2007
    Posts
    297

    Re: Função Copy e Pos

    Citação Postado originalmente por NooB¬¬PluSS
    É q ele pode mudar o cód HTML então o certo seria uma função q pega do title até o final dele...
    Se ele muda o cod do jeito q tu fez n vai funfa pq se uso um " if " e o cod q ele pode colocar é imprevisivel


    Obs : não sei qual cód em HTML ele pode colocar ASUHASUHAASH, mais sei q pode ser mudado

    então tipo dá na msma essa obs huasehaushe

    e tipo
    if pos('<a href="/index.php" title="',s) > 0 then

    ele pode mudar o if pos(' .. para

    title="

    porque dai ele vai pega o titulo, e faz o final apenas pelo "
    então dá na mesma. sim?

  7. #7
    Wannabe
    Data de Ingresso
    Feb 2005
    Localização
    Sampa
    Posts
    815

    Re: Função Copy e Pos

    Bom dia,

    Eu testei os dois códigos e os dois deram certo, no primeiro, apenas tive que editar aqueles números e depois consegui obter o resultado, no segundo código eu consegui obter o resultado sem precisar editar nada.
    Porem agora se eu mudar as tags de HTML que eu quero, eu já não consigo obter um resultado satisfatório, por tanto gostaria que me explica-se como que funciona.

    Código:
    //deixa essa função em cima da sua procedure
    function RetornaLengthFim( PosicaoInicial : integer; sStr : string) : string;
    var
    i : integer;
    stringGerada : string;
    begin
    stringGerada := '';
    Result := '';
    
    for i := PosicaoInicial to Length(sStr) do
    begin
    if not (sStr[i] = '"') then
    stringGerada := stringGerada + sStr[i]
    else
    break;
    end;
    Result := stringGerada;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    sString : String;
    sString2 : String;
    begin
    sString := IdHTTP1.Get('http://www.apostilasnaweb.com');
    sString2 := Copy(sString, Pos('title=', sString)+7, Length(RetornaLengthFim(Pos('title=', sString)+7,sString)));
    ShowMessage(sString2);
    end;
    Nesse primeiro código, pude perceber que se eu alterar os números 7 eu resgato uma nova informação, só que estou com duvida no seguinte.
    De onde você tirou esse numero 7?
    Que calculo você fez para chegar até o numero 7?
    Código:
    sString2 := Copy(sString, Pos('title=', sString)+7, Length(RetornaLengthFim(Pos('title=', sString)+7,sString)));
    No código acima, o primeiro 'title=' e o inicio e o segundo 'title=' e o inicio também ou deveria ser o final do código HTML que eu quero resgatar?

    ************************************************** ************************************************** ************************************************** ************************************************** **************************
    Código:
    var
    s,b: String;
    sString2: String;
    begin
    s := IdHTTP1.Get('http://www.apostilasnaweb.com');
    if pos('<a href="/index.php" title="',s) > 0 then
    sString2 := copy(s,pos('<a href="/index.php" title="',s) + length('<a href="/index.php" title="'), length(s)-1);
    b:= copy(sstring2,1,pos('">',sstring2)-1);
    ShowMessage(b);
    end;
    Cara, de onde você tirou o length(s)-1);, // copy(sstring2,1,pos('">',sstring2)-1); , para que eles servem ?
    Que tipo de calculo você fez para chegar ao numero -1 ?


    Muito obrigado pela ajuda de vocês, estou fazendo essas perguntas apenas para aprender mesmo e finalizar esse assunto !

    Abraços e bom domingo

  8. #8
    Membro
    Data de Ingresso
    Dec 2007
    Posts
    297

    Re: Função Copy e Pos

    Cara, de onde você tirou o length(s)-1);, // copy(sstring2,1,pos('">',sstring2)-1); , para que eles servem ?
    Que tipo de calculo você fez para chegar ao numero -1 ?


    Muito obrigado pela ajuda de vocês, estou fazendo essas perguntas apenas para aprender mesmo e finalizar esse assunto !

    Abraços e bom domingo

    s = string ) s := IdHTTP1.Get('http://www.apostilasnaweb.com');

    axo ke já teve post explicando lengh aqui.
    length retorna o nº de caracteres em uma string


    -1 eu cloquei pra remover

    Código:
     copy(sstring2,1,pos('">',sstring2)-1);

    olhe bem entre pos('')
    tem "> que é pra delimitar, pra não passar de ">, copiar até ali somente.

    -1 é pra remover, tente tirar o -1 pra você ver como fica

    copy(sstring2,1,pos bla bla, ele copia tudo de onde eu pedi,

    Código:
    if pos('<a href="/index.php" title="',s) > 0 then
    até onde delimitei

    Código:
     copy(sstring2,1,pos('">',sstring2)-1);

  9. #9
    Wannabe Avatar de galack
    Data de Ingresso
    Aug 2006
    Localização
    Afghanistan
    Posts
    804

    Re: Função Copy e Pos

    pos
    copy
    delete
    length
    São de grande auxilio para tratamento de strings.
    Apostilas na Web, Tudo bom contigo velho??
    Tem algo que você não entendeu, ou precisa de algum auxilio ??

  10. #10
    Wannabe
    Data de Ingresso
    Feb 2005
    Localização
    Sampa
    Posts
    815

    Re: Função Copy e Pos

    Citação Postado originalmente por galack
    pos
    copy
    delete
    length
    São de grande auxilio para tratamento de strings.
    Apostilas na Web, Tudo bom contigo velho??
    Tem algo que você não entendeu, ou precisa de algum auxilio ??
    Eu estou bem galack, e tu esta bem?

    Então, acho que eu entendi sim, mais se você tiver alguns links, artigos sobre o assunto que estamos discutindo, manda para mim !

    Abraços

Tópicos Similares

  1. função system do c
    Por natogordo no fórum Dúvidas
    Respostas: 10
    Último Post: 11 Jan 2009, 07:14

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •