Olá pessoal,

Eu tenho um software chamado Lan Messenger, que está no meu blog, super
downloads e meus downloads. E alguns usuários me retornaram um problema com
o windows vista, onde as máquinas não são listadas. E como estou usando um
componente de terceiro para listar as máquinas, decidi achar um outro método
para fazer isso sem usar componentes.

Ai achei um função para listar as máquinas da rede + IP em um blog:
http://www.adrianosantos.pro.br/pub/estacoes.zip

Sendo que testando ele funcionou a parte de listagem das máquinas, mas a
função de obter o IP pela máquina não funciona.

Debugando vi que ocorria um Access Violation.

Segue a função:

----------------------------------------------------------------------------------------------------------------------------------------
function TForm1.GetIP(AEstacao: string): string;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  WSAStartup(2, WSAData);
  HostEnt := GetHostByName(PAnsiChar(AEstacao));
  with HostEnt^ do
    Result :=
      Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]),
Byte(h_addr^[2]), Byte(h_addr^[3])]);
  WSACleanup;
end;
----------------------------------------------------------------------------------------------------------------------------------------

A linha que ocorre a exceção é:
Result :=
      Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]),
Byte(h_addr^[2]), Byte(h_addr^[3])]);


Procurando na net, vi que todos usavam a mesma função.



O que pode estar errado?
Existe outra técnica para isso?

-- 
Atenciosamente,
Paulo Coutinho.
Blog: www.prsolucoes.com/blog
Site: www.prsolucoes.com
Msn:  pa...@prsolucoes.com


[As partes desta mensagem que não continham texto foram removidas]

Responder a