Benditos punteros

Fafilberg
19 de Agosto del 2005
Hola, estoy tratando de hace una funcion que me devuelva los dispositivos de sonidos existentes, como no soy programador me esta costando un huevo ya que no logro resolverlo.
La funcion que hice me devuelve el mismo dispositivo siempre, aca la paso para ayudas:

char ** GetDevices()
{
WAVEOUTCAPS woc;
char ** list;
UINT Devs = waveOutGetNumDevs();

if (Devs == 0) return NULL;
list = new char*[Devs];
for (UINT i=0; i <= Devs; i++) if (waveOutGetDevCaps(i, &woc, sizeof(woc)) == MMSYSERR_NOERROR) list[i] = woc.szPname;
return list;
}

Otra cosa, como hago una vez devuelvo el resultado para saber la cantidad de items que pose la variable, osea, yo llamo a la funcion asi:

char ** devs = GetDevices();

como hago ahora para en el bucle saber hasta donde tiene que llegar, osea:

for (int i=0; i<MENOR A QUE??????; i++)

Gracias al que sea.

chuidiang
19 de Agosto del 2005
Buenas:

Veo que también estás en este foro.
Un añadido más a los comentarios que te hice en el otro.
Te comenté que el código es correcto en la asignación, pero un pequeño detalle.
Si la función da error y no te da el dispositivo, tu puntero list[i] queda sin inicializar y puede contener guarrería. Conviene que pongas un else para apuntar dicho puntero a NULL si hay algún error.

Se bueno.