写段程序,选择一个文件夹,并且处理该文件夹里面的所有相应的文件,把得到的数值输出到EXCEL。
    程序运行后,我选择一个文件夹,该文件夹里面大概有2000个需要处理的文件。程序处理500多个文件后就出错退出了。调试时显示“Access Violation”。当文件夹里面的文件少于500个时,程序正常运行。如果我把需要处理的文件名改短之后,程序能够处理的文件数量明显增多。
    请教大家怎么看这个问题?有什么解决方法?万分火急,十分感谢。    主要代码如下:    CString path;
    BROWSEINFO bi;
    ZeroMemory(&bi,sizeof(BROWSEINFO));
    bi.hwndOwner=GetSafeHwnd();
    bi.lpszTitle="请选择ROH数据文件夹 ";
    bi.ulFlags=BIF_RETURNONLYFSDIRS; 
    LPITEMIDLIST pidl=SHBrowseForFolder(&bi);    if(pidl == NULL)
    {
        return;
    }    SHGetPathFromIDList(pidl,path.GetBuffer(10000));
    path.ReleaseBuffer();    if(path[path.GetLength()-1] != '\\')
    {
path+="\\*.roh";
    }
    else
    {
path+="*.roh";
    }    //启动EXCEL服务器,设置初始属性
    ........
    ........     int index1=0,x=0;//寻找文件数量统计    CFileFind find;
    CString sPath="";    if(find.FindFile(path))
    {
while(find.FindNextFile())
{
   sPath=find.GetFilePath();//每次循环都得到下一个文件路径 
            FILE *fd=fopen(sPath,"rb");            float buf[2056];
            fread(buf,sizeof(buf[0]),2056,fd);//读取二进制文件,放到buf数组中    float xbuf[2034];
   float ybuf[2034];
   for (int j=0;j<2034;j++)
   {                                                                                  
       xbuf[j]=buf[1]+buf[2]*j+buf[3]*j*j+buf[4]*j*j*j+buf[5]*j*j*j*j;//算出xbuf和ybuf
       ybuf[j]=buf[j+19];
   }    if (0!=m_Wavelength1)//m_Wavelength1,m_Element1,m_Slaver1由用户输入
   {
       if (m_Slaver1=1&&xbuf[1]>170&&xbuf[1]<174)
       {
  for (int k=0;k<2034;k++)
  {
       if ( fabs(xbuf[k]-m_Wavelength1) < 0.001) 
       {
   x=++index1;
   range.SetItem(_variant_t((long)(x+2)),_variant_t((long)2),_variant_t(ybuf[k]));
   break;
        }
   }
}
              }
          }
    }