您的位置:程序门 -> vb -> 基础类



删除文件的奇怪问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


删除文件的奇怪问题[已结贴,结贴人:michelle_z]
发表于:2007-04-03 20:48:29 楼主
程序运行时创建两个临时文件,一个为temp.gif,一个为temp.mp3。temp.gif要被一个picture控件装载,temp.mp3要被mediaplayer控件播放。某个函数需要删除这两个临时文件,并再次创建。在有些机器(多数)上能正常运行,但有些机器(少数)在再次创建temp.mp3时,会出错,“文件/路径访问出错”。
很奇怪的是,在使用fso.deletefile删除temp.mp3文件后,可以在资源管理器中看到该文件仍然存在,但程序并不报错。此时使用fso.fileexists判断temp.mp3是否存在时,返回的值是false。如果此时手动删除该文件,则也不能删除,说是文件写保护或在使用中。因此,当再次创建temp.mp3时,程序就出错了。当结束应用程序后,该文件也自动消失了,说明是哪个资源释放了。可我真搞不懂到底是哪个资源占用了。
如果说是代码错了,可同样的代码,为什么在有的机器上可以,在有的机器上又不行呢?我想应该是系统的问题,因为有4台使用同一个ghost恢复的机器上都不能正常运行。但我看了操作系统,行和不行的机器都是装的xp   sp2。
怎么解决呀?因为该程序要做成光盘给很多客户去自行安装,所以要保证在所有的机器上都能正常运行。help呀~~~~
发表于:2007-04-03 21:03:121楼 得分:10
纯属应付眼前的方案
我觉得你得mediea   player占用资源并未完全释放,你在那里试验一下

当程序出错的时候,你就创建temp1.mp3,依此类推。然后记得都删除一遍
发表于:2007-04-03 21:27:122楼 得分:10
肯定是medieaplayer没有写关闭的代码
发表于:2007-04-05 16:07:053楼 得分:0
如果说是medieaplayer没有释放资源,可奇怪的是,在使用vb调试的时候,我停止了调试,回到编辑状态时,那个新产生的temp.mp3依然不能被手动删除,还报是在使用。只有关掉vb编译器,也就是退出vb6,那个文件才自动消失。如果是程序中使用的对象占用了资源,应该在停止调试的时候就释放了呀,为什么要退出vb6才被释放资源呢?而且,为什么有的系统上不报错,而有的系统上又出错呢?

再补充一个问题:
使用windowsmediaplayer控件,运行时,控件初始状态的播放按钮是不可用的,只有给windowsmediaplayer1.url的属性赋值之后才会播放媒体文件。如果我要再次将该控件设置为初始状态(也就是为了阻止用户通过点播放按钮来播放上次播放的媒体文件),该怎么设置呢?(注意不是windowsmediaplayer1.enabled   =   false   )
发表于:2007-04-13 17:38:514楼 得分:0
问题解决了,散分~
改用windowsmediaplayer控件(wmp.dll)就不会出现这个问题了。

不过问题又来了,因为考虑到程序要在98-vista上都能使用,现在只是测试了在win2003和xp上能正常安装使用。但在98上不能正常使用,是由于98不支持windowsmediaplayer控件,怎么办呢?高手能不能告诉一下~~~
还要找个vista系统来测试,结果还不知道如何。


快速检索

最新资讯
热门点击