Fabiomiojo Postado Janeiro 6, 2013 Denunciar Share Postado Janeiro 6, 2013 Ola a todos,Eu estou utilizando o IDHTTP para pegar o codigo html de um site!eu gostaria de pegar algumas informações na pagina e não estou conseguindo, axo que é por que o texto é muito grande e as chaves são repetidas!estou usando esse codigo:function StringBetween(const Str, Str1, Str2: String): String;begin Result := Copy(Str, Pos(Str1, Str) + Length(Str1), Pos(Str2, Copy(Str, Pos(Str1, Str) + Length(Str1), Length(Str))) - 1);end;procedure TForm1.Button1Click(Sender: TObject);var HTML: String;begin HTML := IdHTTP1.Get('http://elite-global.servegame.com/?subtopic=characters&name=' + Edit1.Text); memo1.Text := 'Nível: ' + StringBetween(HTML, 'Level:</td><td>', '</td>');end;mas minha função para pegar o texto entre as tags acredito não estar funcionando muito bem!me ajudem amigos! :blush: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 7, 2013 Denunciar Share Postado Janeiro 7, 2013 function StringBetween(const Str, Str1, Str2: String): String; begin Result := Copy(Str, Pos(Str1, Str) + Length(Str1), Pos(Str2, Copy(Str, Pos(Str1, Str) + Length(Str1), Length(Str))) - 1); end; voce esta passando 3 substrings em sua fnção como parametros uso correto da function Copy function Copy(S; Index, Count: Integer): string; agora vamos analizar somente esta parte do codigo Copy(Str, Pos(Str1, Str) + Length(Str1),imagine que para Pos(Str1, Str) foi encontrado o numero 10 e que para Length(Str1) foi encontrado o numero 15então a posição inicial do index seria 25 e não 10 onde a posição inicial foi encontradaé exatamente assim que voce quer ?abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabiomiojo Postado Janeiro 7, 2013 Autor Denunciar Share Postado Janeiro 7, 2013 Jhonas, Analisei o que você me mandou e cosegui chegar a um codigo aqui que funcionou corretamente!<code>function StringBetween(const Str, Str1, Str2: String): String;var Inicio, Fim : String;begin Inicio := Copy(Str, Pos(Str1, Str) + Length(Str1)); // Pega o Texto Restante, iniciando ao final da variavel Str1; Fim := Copy(Inicio, 0, Pos(str2,Inicio) - 1); // Copia o Texto da posição inicial '0' até o Final, que é determinado pela posição inicial da variavel str2 menos '1' para corrigir; Result := Fim;end;procedure TForm1.Button1Click(Sender: TObject);var HTML: String;begin HTML := IdHTTP1.Get('http://elite-global.servegame.com/?subtopic=characters&name=' + Edit1.Text); memo1.Text := 'Nível: ' + StringBetween(HTML, '>Level:</TD><TD>', '</TD></TR>');end;</code>No que pesquisei, a Função Copy, pode ser determinada com 3 variaveis (texto, posição inicial, posição final);Funcionou o codigo!Obrigado! :lol: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fabiomiojo
Ola a todos,
Eu estou utilizando o IDHTTP para pegar o codigo html de um site!
eu gostaria de pegar algumas informações na pagina e não estou conseguindo, axo que é por que o texto é muito grande e as chaves são repetidas!
estou usando esse codigo:
function StringBetween(const Str, Str1, Str2: String): String;
begin
Result := Copy(Str, Pos(Str1, Str) + Length(Str1), Pos(Str2, Copy(Str, Pos(Str1, Str) + Length(Str1), Length(Str))) - 1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HTML: String;
begin
HTML := IdHTTP1.Get('http://elite-global.servegame.com/?subtopic=characters&name=' + Edit1.Text);
memo1.Text := 'Nível: ' + StringBetween(HTML, 'Level:</td><td>', '</td>');
end;
mas minha função para pegar o texto entre as tags acredito não estar funcionando muito bem!
me ajudem amigos! :blush:
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.