TFileStream 占用 问题

MonkeyKingMKY 2014-03-27 06:30:32
这个问题 实在是 很奇怪,寻求 大家的 帮助 。老妖 也一定来 帮一下忙啊~
使用的 编译器是 C++Builder 6


void __fastcall TForm1::btn3Click(TObject *Sender)
{
if ( !dlgOpen1->Execute() )
{ return; }

TFileStream *fs = new TFileStream( dlgOpen1->FileName, fmOpenRead );
delete fs;
fs = NULL;
}


当 使用 这个函数 去 打开 一个文件 比如
D:\test\testFile.txt

只要 程序 还在 运行,
D:\test
这个文件夹 就 处于 占用状态,
不知道 大家 是 怎么解决的~~~~~~~


...全文
144 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MonkeyKingMKY 2014-03-31
  • 打赏
  • 举报
回复
就是 这个啊~~~~ 多谢 老妖~~
ccrun.com 2014-03-31
  • 打赏
  • 举报
回复
优雅的解决办法就是设置一下OpenDialog的选项:
dlgOpen1->Options = dlgOpen1->Options << ofNoChangeDir;
一般人我不会告诉他的。
MonkeyKingMKY 2014-03-29
  • 打赏
  • 举报
回复
对于 这种 基础类 肯定有 比较 “优雅的” 解决办法~ 但是 目前 我没有找到~
MonkeyKingMKY 2014-03-28
  • 打赏
  • 举报
回复
Thank you 这么快的解答 尝试了 一下 确实 可以解决 问题,看起来 TOpenDialog 的 调用 会改变 当前执行目录 但是 总感觉 有一些 不爽啊~ 又没哟 更加 完美的 解决办法呢? 继续请教
宝龙哥 2014-03-28
  • 打赏
  • 举报
回复
这个方法已经很好了,我在程序里面也是这样用的
sololie 2014-03-27
  • 打赏
  • 举报
回复
简单的话直接这样就得了


void __fastcall TForm1::btn3Click(TObject *Sender)
{
	if ( !dlgOpen1->Execute() )
	{	return;	}
	
	TFileStream	*fs = new TFileStream( dlgOpen1->FileName, fmOpenRead );
	delete fs;
	fs = NULL;
       SetCurrentDir("c:\\");  // 加一句,改变当前目录
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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