Bonjour,
J'ouvre un fichier toto.xls avec un OpenFileDialog. J'ouvre ce fichier avec Cfile::Open . L'ouverture se passe bien. (Pas d'exceptions déclenchés) .
Je fais le File.Close() à la fin et la ,j'ai un ASSERT. Quand je remonte l'erreur en debug, voici la ligne qui cloche.
Il se déclenche uniquement si le fichier est déjà ouvert dans excel par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ASSERT(m_hFile != (UINT)hFileNull);
En regardant les valeurs de m_hFile et de hFileNull, elles sont bien différentes.
Je sais que ce n'est pas un probleme bloquant car l'ASSERT ne se déclenchera plus dans la release, mais j'aimerai bien savoir le pourquoi.
Merci
Julien
Fonction présente dans la Class CFile.
Fonction de mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void CFile::Close() { ASSERT_VALID(this); ASSERT(m_hFile != (UINT)hFileNull); //Erreur la ! BOOL bError = FALSE; if (m_hFile != (UINT)hFileNull) bError = !::CloseHandle((HANDLE)m_hFile); m_hFile = (UINT) hFileNull; m_bCloseOnDelete = FALSE; m_strFileName.Empty(); if (bError) CFileException::ThrowOsError((LONG)::GetLastError()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 void RunPattern::OnButton1() { // TODO: Add your control notification handler code here CFileDialog FileOpenDialog( TRUE, NULL, NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST, "", // filter AfxGetMainWnd()); // the parent window if(FileOpenDialog.DoModal()==IDOK) { CEdit *pEdit=static_cast<CEdit*>(GetDlgItem(IDC_EDIT1)); CFile File; try{ if(0!=File.Open(FileOpenDialog.GetPathName(),CFile::modeRead)); pEdit->SetWindowText(File.GetFilePath()); } catch(CFileException *pEx) { Exceptions::CFile_Exception(pEx); } pEdit->SetWindowText(File.GetFilePath()); File.Close(); } }
Partager