以下就是按键4 5 先按4可以在list中正常显示 但是按完5再安4就没反应 res值一直为0
将res= ff.FindFile(l_strDir)的地址改为直接地址如c:\\就无上述反应 求解void CWu002Dlg::OnBnClickedButton4()
{
UpdateData(true);
CFileFind ff;
CString l_strFilePath;
CString l_strFileName;
CString l_strFileExt;
CString l_strFileTitle;
CString l_strFileUrl;
CString l_strFileRoot;
CString l_strResult;
int l=0;
int l_nPoint;
int l_nLength;char buf[1000],tmp[1000];
_getcwd(buf,100);
int si = 0;
for(int i=0;i<1000;i++)
{
tmp[si]=buf[i];
if(buf[i]=='\\')
{
si++;
tmp[si]='\\';
}
si++;
}
tmp[si] = '\0';CString l_strDir = tmp; // m_strDir = "f:\\hoho";
l_strDir+="\\\\电缆\\\\*.txt;
m_list.ResetContent();
((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(l_strDir);
BOOL res;
res= ff.FindFile(l_strDir);
while(res)
{ m_Zs1x=res;
res = ff.FindNextFile();
// 不遍历子目录
if(!ff.IsDirectory() && !ff.IsDots())
{
l_strFilePath = ff.GetFilePath();
l_strFileName = ff.GetFileName();
l_nPoint = l_strFileName.ReverseFind('.'); // 因为文件名中可能出现多个'.'所以用ReverseFind而不用Find?
l_nLength = l_strFileName.GetLength();
l_strFileExt = l_strFileName.Right(l_nLength - l_nPoint - 1);
l_strFileTitle = ff.GetFileTitle();
l_strFileUrl = ff.GetFileURL();
l_strFileRoot = ff.GetRoot();
((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(ff.GetFileName());
l_str[l]=ff.GetFilePath();l++;
}
}
UpdateData(false);
ff.Close();}
void CWu002Dlg::OnBnClickedButton5()
{UpdateData(true);
CString strcontent;
CString strFileName;
CStdioFile file;
CFileDialog savedlg( FALSE,//for save as
"*.txt",//
"电缆.txt", //defalut filename
OFN_CREATEPROMPT|OFN_OVERWRITEPROMPT ,//
"TXT Files (*.txt)|*.txt||",
AfxGetMainWnd() );;
savedlg.m_ofn.lpstrTitle=TEXT("请保存在根目录“电缆”文件夹下,没有请自建\0");
savedlg.m_ofn.lpstrInitialDir="电缆\\*.*";
if (savedlg.DoModal() == IDOK)
{
strFileName = savedlg.GetPathName();
if (!file.Open (strFileName,CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox("Error in Creating File");
}
else
{CString test;
test.Format("%f\n%f\n%f\n%f\n",m_Z1x,m_Z1y,m_Z0x,m_Z0y);
file.WriteString(test);
file.Close();
}
}
UpdateData(false);
}
将res= ff.FindFile(l_strDir)的地址改为直接地址如c:\\就无上述反应 求解void CWu002Dlg::OnBnClickedButton4()
{
UpdateData(true);
CFileFind ff;
CString l_strFilePath;
CString l_strFileName;
CString l_strFileExt;
CString l_strFileTitle;
CString l_strFileUrl;
CString l_strFileRoot;
CString l_strResult;
int l=0;
int l_nPoint;
int l_nLength;char buf[1000],tmp[1000];
_getcwd(buf,100);
int si = 0;
for(int i=0;i<1000;i++)
{
tmp[si]=buf[i];
if(buf[i]=='\\')
{
si++;
tmp[si]='\\';
}
si++;
}
tmp[si] = '\0';CString l_strDir = tmp; // m_strDir = "f:\\hoho";
l_strDir+="\\\\电缆\\\\*.txt;
m_list.ResetContent();
((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(l_strDir);
BOOL res;
res= ff.FindFile(l_strDir);
while(res)
{ m_Zs1x=res;
res = ff.FindNextFile();
// 不遍历子目录
if(!ff.IsDirectory() && !ff.IsDots())
{
l_strFilePath = ff.GetFilePath();
l_strFileName = ff.GetFileName();
l_nPoint = l_strFileName.ReverseFind('.'); // 因为文件名中可能出现多个'.'所以用ReverseFind而不用Find?
l_nLength = l_strFileName.GetLength();
l_strFileExt = l_strFileName.Right(l_nLength - l_nPoint - 1);
l_strFileTitle = ff.GetFileTitle();
l_strFileUrl = ff.GetFileURL();
l_strFileRoot = ff.GetRoot();
((CListBox *)GetDlgItem(IDC_LIST1)) ->AddString(ff.GetFileName());
l_str[l]=ff.GetFilePath();l++;
}
}
UpdateData(false);
ff.Close();}
void CWu002Dlg::OnBnClickedButton5()
{UpdateData(true);
CString strcontent;
CString strFileName;
CStdioFile file;
CFileDialog savedlg( FALSE,//for save as
"*.txt",//
"电缆.txt", //defalut filename
OFN_CREATEPROMPT|OFN_OVERWRITEPROMPT ,//
"TXT Files (*.txt)|*.txt||",
AfxGetMainWnd() );;
savedlg.m_ofn.lpstrTitle=TEXT("请保存在根目录“电缆”文件夹下,没有请自建\0");
savedlg.m_ofn.lpstrInitialDir="电缆\\*.*";
if (savedlg.DoModal() == IDOK)
{
strFileName = savedlg.GetPathName();
if (!file.Open (strFileName,CFile::modeCreate|CFile::modeWrite))
{
AfxMessageBox("Error in Creating File");
}
else
{CString test;
test.Format("%f\n%f\n%f\n%f\n",m_Z1x,m_Z1y,m_Z0x,m_Z0y);
file.WriteString(test);
file.Close();
}
}
UpdateData(false);
}
这里写的是什么?
另外你Debug下调试一下,看看路径对不?函数执行是否失败返回了?
但5按过后 再按4就是没反应 一开始是l_strDir+="\\电缆\\*.txt;
但l_strDir变为f:\\a\电缆\*.txt
list也能显示
l_strDir+="\\\\电缆\\\\*.txt; l_strDir变为f:\\a\\电缆\\*.txt 结果一样