Cita:
Empezado por Casimiro Notevi
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.