C/Visual C - Problemas al escribir en archivo

 
Vista:

Problemas al escribir en archivo

Publicado por Nelek (816 intervenciones) el 16/02/2007 14:50:47
Hola, tengo el siguiente codigo (que me da problemas),
en el header
CArray <BYTE, BYTE&> p_aPrueba;

void CFPSView::WritePCCode (CFile* file)
{
int nCodeLarge = 320;
p_aPrueba.SetSize (nCodeLarge);

CString str1 = "", str2 = "";
str1.Format ("%s%i", str1, p_aPrueba.GetSize());
str2.Format ("%s%i", str2, nCodeLarge);
AfxMessageBox ("Tiene "+str1+" elementos de "+str2+" que deberia tener");

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 el 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?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Solucionarlo, sé, pero quiero saber la razón.

Publicado por Nelek (816 intervenciones) el 16/02/2007 14:57:17
Si pongo:

file->Write (lpCodeBuf, nCodeLarge * sizeof (BYTE));

entonces funciona bien.

No es por cuestion de funcionamiento, es por curiosidad, porque con un array va bien? y con el otro va mal? No lo entiendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar