Diferencia entre @H y @H [0]

8

yo tengo

 var H: array of THandle;

luego, en un bucle, creo múltiples subprocesos, y asigno identificadores de subproceso a los elementos de H, y luego los espero. Pasar @H [0] como el segundo parámetro a WFMO a continuación funciona.

WaitForMultipleObjects(Length(H), @H[0], True, INFINITE) <-- Works

Pero pasar @H como se muestra a continuación falla con WAIT_FAILED. GetLastError devuelve "Identificador no válido".

WaitForMultipleObjects(Length(H), @H, True, INFINITE)  <--- Fails.

¿Por qué @H es diferente de @H [0]?

Nani
fuente

Respuestas:

8
  1. Debido a que es una matriz dinámica, Hya es un puntero y apunta al primer elemento, por lo que
  2. @H[0]es lo mismo que H- puntero al primer elemento
  3. y ahora @Hes igual a @@H[0]- puntero a puntero al primer elemento.
zed
fuente
Gracias. Entonces, si H fue declarado como H: array[0..10] of THandleentonces, @H y @H [0] serían lo mismo, supongo. Puedo comprobarlo
Nani
@ Nani Sí, si Hes una matriz estática , entonces necesita obtener su dirección a través del @operador y luego @Hes igual a @H[0].
zed
También puede usar POINTER (H) para obtener un puntero al primer elemento de la matriz dinámica.
HeartWare