关于DeleteFile的问题..大家帮帮忙
在OnInitDialog()中写有
fstream f;
f.open("e:\\a.txt",ios::out);
SetTimer(1,set_t,NULL);
f.close();
然后在OnTimer()中的代码是
fstream f;
if(nIDEvent==1)
{
SetTimer(2,set_t,NULL);
DeleteFile("e:\\b.txt");
f.open("e:\\b.txt",ios::out);
KillTimer(1);
}
else if(nIDEvent==2)
{
SetTimer(3,set_t,NULL);
DeleteFile("e:\\c.txt");
f.open("e:\\c.txt",ios::out);
KillTimer(2);
}
else if(nIDEvent==3)
{
SetTimer(1,set_t,NULL);
DeleteFile("e:\\a.txt");
f.open("e:\\a.txt",ios::out);
KillTimer(3);
}
f.close();
为什么文件删除不掉呢..GetLastError的错误码是32.好像是"进程无法访问文件,因为另一个程序正在使用此文件。"但好像没有另一个程序在使用这个文件呀..怎么解决呀???大家帮帮我
问题点数:60、回复次数:13Top
1 楼rick29(rick.z)回复于 2005-08-03 20:18:25 得分 0
可能是你的程序在什么地方打开着这个文件。。。Top
2 楼Heavenangel(CONJURER)回复于 2005-08-03 20:20:37 得分 0
没有呀...就开了一个VC..一个资源管理器..没了呀..怎么会??Top
3 楼newbiestar()回复于 2005-08-03 20:21:42 得分 0
这个你看到的肯定是删不掉……ios::out默认没有文件就要创建,如此一来,就算删掉了你也看不到……看不到阿看不到……
你需要先判断DeleteFile的返回值,如果非0的话,根本不用去GetLastError……Top
4 楼boyplayee()回复于 2005-08-03 20:21:45 得分 0
DeleteFile("e:\\b.txt");
f.open("e:\\b.txt",ios::out);
//删除和打开的为什么是同一个文件呢?不懂Top
5 楼newbiestar()回复于 2005-08-03 20:22:50 得分 0
另外,建议你重启一下再试你的代码……从XP开始Windows好像就有这种乱七八糟的RPWT乐……Top
6 楼Heavenangel(CONJURER)回复于 2005-08-03 20:29:15 得分 0
不是我是第一个时钟删第二个时钟建立的文件,第二个时钟删第三个时钟建立的文件,第三个时钟删第一个时钟建立的文件,是循环删除.但没有办法删除掉..
ios::out我是先删再建立一个文件的呀...而且每次也都close()的..这个应该没什么问题的吧.Top
7 楼newbiestar()回复于 2005-08-03 20:44:52 得分 0
问题在于你这段代码里面删除和创建文件之间的间隔太短了,来不及让你看到,然后就创建了文件的……
删除A,并且重建A的这个过程对你来说太短暂了……
你要判断DeleteFile的返回值就知道是否删除成功了……如果删除不成功的话你就应该立即GetLastError,按照你现在的代码调用GetLastError都不知道是什么时候的事情了……Top
8 楼Heavenangel(CONJURER)回复于 2005-08-03 20:49:45 得分 0
这段程序只是我的一个测试..我在写的东西是这样的..在初始时先开启一个时钟1然后产生一个文件叫first.txt 然后在ontimer()中判断
如果是一号时钟的话那么开启二号时钟,然后产生一个second.txt的文件.并且删除first.txt
如果是二号时钟的话那么就开启一号时钟,然后产生一个first.txt文件.删除second.txt
也就是说两个文件只能存在一个.怎么做到????大家帮帮我Top
9 楼newbiestar()回复于 2005-08-03 21:22:07 得分 0
说了半天,你就是不愿意判断以下DeleteFile的返回值吗?Top
10 楼xuzebin(许)回复于 2005-10-15 19:51:58 得分 0
楼主能说一下deletefile是包含在那个头文件里面的吗?Top
11 楼Mackz(在相互)回复于 2005-10-16 00:21:29 得分 0
这种设计思想比较混乱,搞不清楚。Top
12 楼puma_xlc(天涯)回复于 2005-10-17 10:14:23 得分 0
DeleteFile("e:\\a.txt");
f.open("e:\\a.txt",ios::out)
删除了怎么还能够打开呢?
是不是用f.createfile 呢
来创建一个文件?
Top
13 楼ClientDC(萧柳)回复于 2005-10-17 10:51:37 得分 0
建议使用别的方式实现,比如信号灯,普通的可以设置各种标记位Top




