拷贝文件以后的奇怪现象

chrc1122 2011-10-20 06:53:21
在一个系统里面设置了文件拷贝的操作。代码如下:

CFileDialog *file = new CFileDialog (TRUE) ;
TCHAR *path = new TCHAR[1000] ;
CString str ;
::ZeroMemory (path, 1000) ;

GetModuleFileName (NULL, path, 1000) ;
//GetCurrentDirectory (1000, path) ;
file->DoModal () ;
str = file->GetPathName() ; //获取文件的绝对路径

TCHAR FilePath[256] = {0};
TCHAR Drive[4], Dir[128], FileName[132], Ext[20];

GetModuleFileName(NULL, FilePath, _countof(FilePath));
CString str1(FilePath) ;
int n = str1.ReverseFind (TEXT('\\')) ;
CString str2 = str1.Left (n+1) ;
int m = str.ReverseFind (TEXT('\\')) ;
int j = str.GetLength () - m ;
CString str3 = str.Right (j-1) ;

str2 = str2 + TEXT("墙纸成品\\") + str3 ;
BOOL bl = CopyFile (str, str2, FALSE ) ;

if(bl)
{
::MessageBox (this->m_hWnd, TEXT("成功copy"), NULL, 0) ;
}
else
{
::MessageBox (this->m_hWnd, TEXT("失败copy"), NULL, 0) ;
}
可是拷贝完文件以后,再打开数据库的时候,怎么会出现“ERROR 打开数据库异常 错误信息:未指定的信息 ” “打开数据库时异常 错误信息 unknow error 0x800A0E78”,难道是拷贝文件的操作使程序找不到access数据库文件?(注:若不使用程序拷贝 手动移动文件不会出错) 请问有什么好的解决方案 !谢谢。。
...全文
202 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
youhao1999 2011-10-20
  • 打赏
  • 举报
回复
路过帮顶
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
结贴给分啦
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
结贴给分了 谢谢各位
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
嗯 可以了 方法Yang说的那样
vrace 2011-10-20
  • 打赏
  • 举报
回复
打开文件夹的对话框修改了路径,flag里面可以加个 OFN_NOCHANGEDIR 就好了
danxuezx 2011-10-20
  • 打赏
  • 举报
回复
解决了记得把相关API告诉大家一下~~
danxuezx 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chrc1122 的回复:]
引用 12 楼 danxuezx 的回复:
引用 4 楼 chrc1122 的回复:
实验后发现是
CFileDialog *file = new CFileDialog (TRUE) ;
file->DoModal () ;
str = file->GetPathName() ;
的原因,难道用这一句就会让程序找不到数据库文件??

我记得CFileDialog操作后会改变当前程……
[/Quote]
在调用之前获得在调用之后重新set,有相关的API,忘了名字。
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 danxuezx 的回复:]
引用 4 楼 chrc1122 的回复:
实验后发现是
CFileDialog *file = new CFileDialog (TRUE) ;
file->DoModal () ;
str = file->GetPathName() ;
的原因,难道用这一句就会让程序找不到数据库文件??

我记得CFileDialog操作后会改变当前程序运行的目录。
在这段代码前后你看看程序当前……
[/Quote]

嗯 也发现这个问题了,事实上确实改变了。请问有什么办法可以解决吗?
danxuezx 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chrc1122 的回复:]
实验后发现是
CFileDialog *file = new CFileDialog (TRUE) ;
file->DoModal () ;
str = file->GetPathName() ;
的原因,难道用这一句就会让程序找不到数据库文件??
[/Quote]
我记得CFileDialog操作后会改变当前程序运行的目录。
在这段代码前后你看看程序当前运行的目录是否被改变了。
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
自己顶个 希望有解决办法
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
释放了 再最后没考上来 晕 知道什么原因了
dlg.DoModal()后会改变路径,而我的数据库是设置的相对路径,所以无法访问(设置绝对路径,这个问题算是解决了)。
可是在数据库文件里写的也是图片的相对路径,dlg.DoModal()之后也没法找到了。
问题已经发现了,请求解决方案
向立天 2011-10-20
  • 打赏
  • 举报
回复
好像没看见你释放空间
lumingming 2011-10-20
  • 打赏
  • 举报
回复
什么情况职。、
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
好像不行 。。。

实在是无语了。。。。
用户 昵称 2011-10-20
  • 打赏
  • 举报
回复
直接使用 CFileDialog dlg;
dlg.DoModal()如何?
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
用的是access的本地数据库
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
实验后发现是
CFileDialog *file = new CFileDialog (TRUE) ;
file->DoModal () ;
str = file->GetPathName() ;
的原因,难道用这一句就会让程序找不到数据库文件??
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jennyvenus 的回复:]
两个数据库比较一下一样吗?

如果不一样,可以比较一下哪里不一样。
[/Quote]
您理解错了 都是在操作一个数据库。
没执行拷贝文件之前,打开数据库正常。执行完拷贝文件后,打开数据库异常。
用户 昵称 2011-10-20
  • 打赏
  • 举报
回复
两个数据库比较一下一样吗?

如果不一样,可以比较一下哪里不一样。
chrc1122 2011-10-20
  • 打赏
  • 举报
回复
自己顶下 求教

16,551

社区成员

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

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

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