我的遍历CF读取文件名的程序,有问题,大家帮看一下
void CSoundMenuDlg::LoadLogData()
{
CString FileName;
HANDLE hFind;
WIN32_FIND_DATA findfile;
TCHAR SourceDir[]=_T( "\\Storage Card ");
hFind = FindFirstFile (SourceDir,&findfile);
if (hFind !=INVALID_HANDLE_VALUE)
{
do
{
FileName = findfile.cFileName;
if (!(findfile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
strName=FileName;
strName=strName.Right(strName.ReverseFind( '. '));
}
}
while (::FindNextFile (hFind, &findfile));
::FindClose (hFind);
}
}
其中strName是全局变量,现在用AfxMessageBox(strName)都显示空的(当然,我的CF卡不是空的),郁闷呢,大家帮忙看看,谢谢!
个人觉得问题可能出在TCHAR SourceDir[]=_T( "\\Storage Card "); 或strName=FileName; ,
strName=strName.Right(strName.ReverseFind( '. '));
但找不到:(
[解决办法]
我想你是路径除了问题,应该是
hFind = FindFirstFile(L "\\Storage Card\\* ",&findfile);
另外得到的文件名是Unicode的,必须转换
可以使用WideCharToMultiByte函数