Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Portal

Problema com functions

Recommended Posts

Seguinte tá acontecendo uma coisa estranha eu peguei na internet programinha que tem uma função que retorna o nº do IP da máquina, mas tá acontecendo que está função não tá sendo reconhecida pelo delphi, dá uma olhada:private function TForm1.GetIP:string; {lá nas declarações está sendo declarado assim}procedure TForm1.Button1Click(Sender: TObject); {Botão que chama a função}begin Label3.caption := GetIP;end;function TForm1.GetIP:string; {A função está no final depois de todas as procedures}var WSAData: TWSAData; HostEnt: PHostEnt; Name : string;begin WSAStartup(2, WSAData); SetLength(Name, 255); Gethostname(PChar(Name), 255); SetLength(Name, StrLen(PChar(Name))); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do begin Result := Format('%d.%d.%d.%d', [byte(h_addr^[0]),Byte(h_addr^[1]), Byte(h_addr^[2]),Byte(h_addr^[3])]); end; WSACleanup;end;E lá nas declarações eu coloquei ela no private, e estou chamando em um botão para colocar o ip em um label exatamente como tinha no programa que eu peguei da internet, só que quando eu coloco ela no form o delphi não reconhece a function!!! Aparecem as seguintes mensagens de erro:Undeclared Indentifer: TForm1Undeclared Indentifer: GetIP {Que é a função}Undeclared Indentifer: Result Poderiam dar uma idéia pra arrumar isso?? Muito agradecio desde já, por favor respondam por que isso é muito importante, obrigado..Rafael Portal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá... Em private function TForm1.GetIP:string; {lá nas declarações está sendo declarado assim} Tire o TForm1. ficando assim private function GetIP:string; {lá nas declarações está sendo declarado assim}Espero ter ajudadoHenrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Henrique, mas está acontecendo outro problema, quando eu tento compilar agora aparece outra mensagem d erro que eu não entendi muito bem o que está acontecendo agora dá só uma olhada:{Mensagem de erro que aparece, referente as declarações}Unsatisfied forward or external declaration: 'TForm1.GetIP'Não entendi, presumo que esteja tudo certo mas isso ficou estranho e o projeto não roda!!! Se puderes me responder, eu agradeço muito!!Rafael Portal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá...

 

É o seguinte.... na cláusula PRIVATE a declaração vai sem o TForm1.

 

mas na função em si isso deve ter... fica assim :

 

 private    { Private declarations }    function GetIP:string; {lá nas declarações está sendo declarado assim}........function TForm1.GetIP:string; {A função está no final depois de todas as procedures}var WSAData: TWSAData; HostEnt: PHostEnt; Name : string;  ...   ...

Entendeu...

 

 

Abraço

Henrique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Henrique,Valeu pela força, mas eu descobri que eu estava declarando a função no lugar errado, declarei ela como private, mas eu coloquei ela depois das declarações e funcionou!!! Como eu falei sou principiante, estes erros ainda acontecem, mas agora estou pegando o ritmo..Valeu mesmo Henrique!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother...Faz mais fácil...na ficha de componentes Indy Miscpega um componente IdIPWatch1 e coloque no seu form.Quando precisar use assim pos ex :Label1.caption := IdIPWatch1.LocalIP;Valeu!!??espero q ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.