C/Visual C - ayuda con este crash

 
Vista:

ayuda con este crash

Publicado por maCo (4 intervenciones) el 24/01/2003 07:38:00
mi programa para haciendo crash
y no se porque, quien me podria ayudar, gracias

void DoOpenFile(void)
{
OPENFILENAME OFN;
char szFile[255];

OFN.lStructSize = sizeof(OPENFILENAME);
OFN.hInstance = hInst;
OFN.hwndOwner = hWnd;
OFN.lpstrFile = szFile;
OFN.nMaxFile = 255;
OFN.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_LONGNAMES |
OFN_EXPLORER | OFN_HIDEREADONLY;
if (GetOpenFileName(&OFN))
{
MessageBox(hWnd, OFN.lpstrFile, ".......", MB_OK);
}
}

hInst es la instancia y hWnd en el manejador de la ventana
gracias
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

RE:ayuda con este crash

Publicado por Endos (58 intervenciones) el 24/01/2003 19:35:35
Prueba a usar un TCHAR en vez de un char y a poner a cero los buffers antes de usarlos a ver si así te funciona bien:
...
TCHAR szFile[MAX_PATH];

ZeroMemory(&OFN, sizeof(OFN));
ZeroMemory(szFile, sizeof(TCHAR)*MAX_PATH);

...
OFN.nMaxFile=MAX_PATH;
...

Saludos.
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

RE:ayuda con este crash

Publicado por maCo (4 intervenciones) el 24/01/2003 23:30:57
hola, sabes si me funciono poniendo en 0 los buffer de szFile y de OFN
lo puse asi:
OPENFILENAME OFN = {0};
char szFile[MAX_PATH] = {0};

entonces cada buffer que creo en VC++ tengo que ponerlo a 0 ?
recien empiezo con VC++, y en VB o Delphi o ASM (MASM) no sucedia eso.
tambien note que si los declaraba como static no sucedia error
static char szFile, static OPENFILENAME OFN

en conclusion tengo que inicializar cada buffer ?
gracias por tu tiempo
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

RE:ayuda con este crash

Publicado por Endos (58 intervenciones) el 25/01/2003 00:29:23
En realidad la forma en que asignas 0 solo afecta en caso de la estructura a su primer miembro y en el arreglo al primer byte. No se llena todo el espacio con ceros de esa forma.
Ten en cuenta que en C/C++ solo se inicializan a 0 las variables globales y las estáticas al inicio del programa, el resto tienen valores indefinidos. Solo necesitas inicializar las variables cuando sea necesario. En este caso, según la documentación de Microsoft: "The first character of this buffer must be NULL if initialization is not necessary." O sea, que el primer byte de "szFile" debe ser 0, que es justo lo que estas haciendo.

Saludos
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

RE:ayuda con este crash

Publicado por maCo (4 intervenciones) el 25/01/2003 01:48:39
ah ok, gracias
shame on microsoft , lol
no mentira, jeje
chao
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