Erro ao Dar um Ping

27/08/2013

0

Pessoal estavo usando o delphi 2010 e resolvi mudar para o Delphi XE4 e estou com um problema em uma função abaixo

function ExecutaPing(HostName: String): boolean;
var
  PckEntregue : Array[1..3] of Integer;
  ICMP : TIdIcmpClient;
begin
  try
   ICMP := TIdIcmpClient.Create(nil);
    try
     ICMP.Host := HostName;
     ICMP.ReceiveTimeout := 500;
     ICMP.Ping;
      if ICMP.ReplyStatus.BytesReceived > 0 then
       result := true
       else
        result := false;
    except
     result := false;
    end;
  finally
    ICMP.Destroy;
  end;
end;	


no D2010 funciona certinho no XE4 m retornar o erro Socket Error 10040 message too long

alguem saberia m dizer oq pode ser isso...
Laelson Fagundes

Laelson Fagundes

Responder

Posts

27/08/2013

Wilson Oliveira

Ele usa a api do windows que precisa de permissão de aministrador.

Compile o projeto e tente executar o executavel como administrador e veja se o problema persiste.

sds

arreegua
Responder

27/08/2013

Wilson Oliveira

Ele usa a api do windows que precisa de permissão de aministrador.

Compile o projeto e tente executar o executavel como administrador e veja se o problema persiste.

sds

arreegua
Responder

27/08/2013

Laelson Fagundes

Meu PC não ter permissão de usuário, pois a mesma funciona com o Delphi 2010 perfeitamente mas quando fui migrar para o Delphi Xe4 ele retorna erro mencionado....
Responder

27/08/2013

Wilson Oliveira

Qual versão do windows que você usa???
Responder

27/08/2013

Laelson Fagundes

uso o windows 7 mas como eu disse isso não é problema de windows pois o delphi 2010 funciona perfeitamente..
Responder

27/08/2013

Wilson Oliveira

Tenta o que te falei. Ja tive esse problema, de repente mudou o mecanismo do componente.
Vai no exe compilado e botão direito e executar como admin .

Se nao der tenta setar a propriedade packetsize para um valor menor.

Mas tenta executar como admin nao custa nada e elimina uma variável . Estava dando esse erro ara mim, Windows 7 Delphi xe3 , executando comi admin funcionou para mim
Responder

13/10/2013

José

Olá Tchuck, conseguiu solucionar seu problema ou teve algum avanço ?
Responder

13/10/2013

Laelson Fagundes

No delphi EX4 eu não consegui o problema continuou, eu tive que voltar usar o 2010 que não ocorre o problema com o componente Indy pretendo fazer um teste no EX 5 para ver se vai ocorrer o erro.

Mas fiz uma gambiarrinha e por um periodo funcionou mas é muito relevante as vezes ele retorna o erro mas tem momentos q não so q no Delphi 2010 funciona 100% com a função acima:

para funcionar no EX 4 estava usando da seguinte forma:

function ExecutaPing(HostName: String): boolean;
var
  PckEntregue : Array[1..3] of Integer;
  ICMP : TIdIcmpClient;
  ABuffer: String;
begin
  try
   //Adicionado o Buffer para resolver o problema com o Delphi XE4
   //ABuffer:=HostName+StringOfChar(' ',255);
   ICMP := TIdIcmpClient.Create(nil);
    try
     ICMP.PacketSize := 32;
     ICMP.Host := HostName;
     ICMP.ReceiveTimeout := 500;
     ICMP.Ping;//(ABuffer);
      if ICMP.ReplyStatus.BytesReceived > 0 then
       result := true
       else
        result := false;
    except
     result := false;
    end;
  finally
    ICMP.Destroy;
  end;
end;
Responder

25/06/2022

Joel Realino

Porra... CHUTA pra caralho.... DA proxima vez ve se chuta no gol parça.

Ele usa a api do windows que precisa de permissão de aministrador.

Compile o projeto e tente executar o executavel como administrador e veja se o problema persiste.

sds

arreegua
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar