Antharaz 3 Denunciar post Postado Novembro 15, 2009 Source original: Function MeuIP: string; var iip : char; site: string; d,c,cont : integer; begin c := 215; d := 15; site := Form1.IdHTTP1.Get('http://meuip.datahouse.com.br'); MeuIP := Copy(site, Pos('', site) +c, d); for cont := 1 to 15 do begin iip := Copy(site, Pos('', site) +c, d)[1]; if iip = ' ' then c := c+1; iip := Copy(site, Pos('', site) +c, d)[length(Copy(site, Pos('', site) +c, d))]; if iip = '<' then d := d-1; MeuIP := Copy(site, Pos('', site) +c, d); end; end; Depois que eu modifiquei: Function MeuIP: string; var iip : char; site: string; d,c,cont : integer; IdHTTP1 : TIdHTTP; begin IdHTTP1 := IdHTTP1.create(self); c := 215; d := 15; site := Form1.IdHTTP1.Get('http://meuip.datahouse.com.br'); MeuIP := Copy(site, Pos('', site) +c, d); for cont := 1 to 15 do begin iip := Copy(site, Pos('', site) +c, d)[1]; if iip = ' ' then c := c+1; iip := Copy(site, Pos('', site) +c, d)[length(Copy(site, Pos('', site) +c, d))]; if iip = '<' then d := d-1; MeuIP := Copy(site, Pos('', site) +c, d); end; IdHTTP1.free; end; Erros que está dando: [DCC Error] Unit1.pas(117): E2003 Undeclared identifier: 'self' [DCC Error] Unit1.pas(120): E2003 Undeclared identifier: 'IdHTTP1' Porque está dando este erro? Eu fiz o mesmo em outra parte da source com o tcpclient e deuc erto... PS:.. na uses o IdHTTP está declarado... Compartilhar este post Link para o post Compartilhar em outros sites
Antharaz 3 Denunciar post Postado Novembro 15, 2009 agora que percebi... IdHTTP1 := IdHTTP1.create(self); O correto é: IdHTTP1 := TIdHTTP.create(nil); Mais uma dúvida... Porque quando eu coloco o self no lugar no nil ele fala que não declarei o self sendo que eu usei ele em outro componente run time? Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Novembro 15, 2009 So explicando, IdHTTP1 := IdHTTP1.create(self); -> Self indica que que o componente ira fazer parte do seu formulario (isso é usado quando se cria um componente). Quando você cria um componente e dentro dele vocêm precisa usar varios outros (como memos e edits) você coloca no seu evento onCrate, o parametro (Self) para indicar que as instâncias fazem parte do seu novo componente IdHTTP1 := IdHTTP1.create(nil); -> Nil inidca que o componente não fará parte de nenhum outro. Não vejo problemas em usar self aqui, mas como eu disse, so para explicar. Compartilhar este post Link para o post Compartilhar em outros sites
Antharaz 3 Denunciar post Postado Novembro 15, 2009 Taficcha, eu tentei usar o self e deu erro, por isto mudei para o nil... A explicação do porque não consigo usar o self ali é dada pelo meu amigo Azurus: Como você está tentando usar o self dentro de uma função que não referencia um objeto ele simplesmente não existe Compartilhar este post Link para o post Compartilhar em outros sites