FIX: CFile::GetFileName() Always Returns CString w/Zero LengthLast reviewed: September 19, 1997Article ID: Q143086 |
4.00
WINDOWS NT
kbprg kbbuglist kbfixlist
The information in this article applies to:
SYMPTOMSIf you call CFile::GetFileName(), it will return a CString with the correct file name. However, if you call GetLength() on the CString, it will return 0.
CAUSEThe MFC function CFile::GetFileName() writes directly to the CString's character pointer. However, it doesn't set the CString's size before returning from this function.
RESOLUTIONCall CString::ReleaseBuffer() after calling CFile::GetFileName().
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ 4.1.
MORE INFORMATION
Sample Code
void CTestDoc::Serialize(CArchive& ar){ if (ar.IsStoring()) { // TODO: add storing code here } else { CFile* fp = ar.GetFile (); ASSERT (fp); CString fname = fp->GetFileName (); // this line is needed to set the size of CString fname.ReleaseBuffer (); int nLength = fname.GetLength(); }}
|
Additional reference words: 4.00 4.10 GetFileName GetLength CFile CString
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |