Alguien me dice que pasa aqui???
Publicado por Nelek (816 intervenciones) el 20/02/2007 08:09:34
Hola, tengo el siguiente codigo (que me da problemas),
en el header
CArray <BYTE, BYTE&> p_aPrueba;
void CMyView::WritePCCode (CFile* file)
{
int nCodeLarge = 320;
p_aPrueba.SetSize (nCodeLarge);
BYTE aPrueba [320];
for (int i = 0; i < 320; i++)
{
if ( i < 256)
p_aPrueba[i] = i;
else
p_aPrueba[i] = 0;
}
const void* lpCodeBuf;
lpCodeBuf = (void*)&p_aPrueba[0];
file->Write (lpCodeBuf, sizeof (p_aPrueba));
return;
}
Con un AfxMessageBox compruebo que realmente el vector CArray del MFC tiene los elementos que pido, se rellena como toca, pero resulta que al escribir en el archivo, me escribe SOLO 20 bytes. Si conforme lo tengo, simplemente borro los "p_" y dejo que se ejecute exactamente lo mismo pero para el "BYTE Prueba [320]" entonces funciona a la perfeccion y hace lo que se supone que debe de hacer.
Por que narices con el p_aPrueba, me funciona mal y con el array de toda la vida me funciona bien?
Si pongo:
file->Write (lpCodeBuf, nCodeLarge * sizeof (BYTE));
entonces funciona bien.
No es por cuestion de funcionamiento ya que la solucion ya la tengo, es por curiosidad, porque el "sizeof (array)" funciona bien con uno y con el otro no? No lo entiendo.
en el header
CArray <BYTE, BYTE&> p_aPrueba;
void CMyView::WritePCCode (CFile* file)
{
int nCodeLarge = 320;
p_aPrueba.SetSize (nCodeLarge);
BYTE aPrueba [320];
for (int i = 0; i < 320; i++)
{
if ( i < 256)
p_aPrueba[i] = i;
else
p_aPrueba[i] = 0;
}
const void* lpCodeBuf;
lpCodeBuf = (void*)&p_aPrueba[0];
file->Write (lpCodeBuf, sizeof (p_aPrueba));
return;
}
Con un AfxMessageBox compruebo que realmente el vector CArray del MFC tiene los elementos que pido, se rellena como toca, pero resulta que al escribir en el archivo, me escribe SOLO 20 bytes. Si conforme lo tengo, simplemente borro los "p_" y dejo que se ejecute exactamente lo mismo pero para el "BYTE Prueba [320]" entonces funciona a la perfeccion y hace lo que se supone que debe de hacer.
Por que narices con el p_aPrueba, me funciona mal y con el array de toda la vida me funciona bien?
Si pongo:
file->Write (lpCodeBuf, nCodeLarge * sizeof (BYTE));
entonces funciona bien.
No es por cuestion de funcionamiento ya que la solucion ya la tengo, es por curiosidad, porque el "sizeof (array)" funciona bien con uno y con el otro no? No lo entiendo.
Valora esta pregunta
0