Benditos punteros
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.
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.
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.
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.
