Ver Mensaje Individual
  #4  
Antiguo 04-02-2024
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 290
Reputación: 21
elrayo76 Va por buen camino
Cita:
Empezado por Delphi01 Ver Mensaje
El error de "Range Check Error" ocurre cuando se accede a un índice fuera de los límites de un array. En el código que has proporcionado, el error ocurre en la línea donde se accede a recTcpTable.Table[i].dwRemoteAddr. Esto puede suceder si el valor de i es mayor o igual al número de entradas en la tabla recTcpTable.
Se que el error es en ese punto, pero no es por lo que dices. Si te fijas en el IF veras que se acceder a los otros valores del record y he comprobado que los otros no dan error. El error me suena mas a que algo no funciona en Delphi 11 con respecto a los tipos de datos que dice la documentación de Microsoft para el record que uso.

Si buscas en Internet podrás ver que usan cosas similares, pero solo que está pensado con Delphi 7.

He probado cambiar el tipo de dato del record para "dwRemoteAddr" y el error no se da, pero no es lógico dado que la documentación de Microsoft como dije utiliza un DWORD. Este cambio hace que tenga que cambpiar y revisar todo el código.

Lo que se me ocurre pensándolo bien es que dwRemoteAddr este guardando una dirección de IPv6 y que que como utilizo todo con IPv4 por eso da el error. Pero ya te digo que no lo se, tendría que buscar la forma de ver que es lo que intenta obtener

La validación que dices de poner no la veo lógica, por mas que pueda funcionar, ya que si le dices que el ciclo este entre 0 y el máximo - 1 de la tabla no debería nunca pasarse de la cantidad de items del array.

Casimiro, voy a probar con lo que tu me dices, puede que el problema como comente una líneas mas arriba puede ser dado por la versión de IP que quiere obtener y que el tipo de dato no sea el adecuado. Si es así y lo que propones funciona sería una solución y luego vería el tema de las direcciónes de IPv6

Saludos
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita