Ver Mensaje Individual
  #27  
Antiguo 15-10-2015
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero mientras no se sepa qué dimensión tiene, debería ser null y no dejar acceder.

Te pongo un ejemplo típico:

La estructura WLAN_AVAILABLE_NETWORK_LIST es usada para obtener una lista de redes wifi disponiobles, la API WlanGetAvailableNetworkList recibe por referencia un puntero a un elemento WLAN_AVAILABLE_NETWORK_LIST y devuelve la lista deseada en un bloque de memoria a la que apunta el puntero pasado.
Esta es la definición:
Código Delphi [-]
TWLAN_AVAILABLE_NETWORK_LIST = record
    dwNumberOfItems: DWORD;
    dwIndex: DWORD;
    Network: array[0..0] of TWLAN_AVAILABLE_NETWORK;
end;
Observa que el array Network definido en la estructura solo contiene un elemento, sin embargo puede tener muchos mas. Cuando WlanGetAvailableNetworkList nos devuelva el puntero a la lista de redes (WLAN_AVAILABLE_NETWORK_LIST), Windows informa del número de elementos que tiene en dwNumberOfItems. Nosotros navegaremos por el array Network donde están las redes, el límite lo controlaremos nosotros pero no delphi.

Casos como el que expongo son habituales cuando se trabaja a nivel de API. Un compilador que limite los índices no sería operativo a bajo nivel y delphi lo es.


Saludos.
Responder Con Cita