Ver Mensaje Individual
  #12  
Antiguo 06-11-2017
rdaniel2000 rdaniel2000 is offline
Miembro
 
Registrado: jun 2003
Posts: 11
Reputación: 0
rdaniel2000 Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Prueba con esta versión:
Notarás que hay una variable mas "P2" de tipo PChar.
Quizas la asignación directa del resultado de inet_ntoa que es PChar a String no le gusta.

Código Delphi [-]
function DameIPLocal: string;
var
  p : PHostEnt;
  s : array[0..128] of char;
  p2 : PChar;
  wVersionRequested : word;
  wsaData : TWSAData;
begin
  // Arranca la librería WinSock
  try
     wVersionRequested := MAKEWORD(1, 1);
     WSAStartup(wVersionRequested, wsaData);

     // Obtiene el nombre del PC
     GetHostName(@s, 128);
     p := GetHostByName(@s);

     // Obtiene la dirección IP y libera la librería WinSock
     p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
     if (Assigned(p2)) then
        Result := Result + p2
     else
        Result := '';
     WSACleanup;
  except
    on E: Exception do
      Result := E.Message;
  end;
end;


Le agregue a tu funcion el Mensaje de Excepcion para saber si aun continua y desafortunadamente la Excepcion persiste.
Responder Con Cita