继续请教,继续等

dengzhu 2010-03-10 09:38:28
写段程序,选择一个文件夹,并且处理该文件夹里面的所有相应的文件,把得到的数值输出到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;
}
}
}
}
}
}
...全文
96 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengzhu 2010-03-10
  • 打赏
  • 举报
回复
好像可以了。哈哈。非常感谢。
WizardK 2010-03-10
  • 打赏
  • 举报
回复
你上个帖子就让你把文件检索循环里的贴出来,没有fclose,加上再试试
fishion 2010-03-10
  • 打赏
  • 举报
回复
用fopen调用完文件后要用fclose

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧