CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

我用CopyFile这个函数怎么不行?

楼主xhmhit(祁儿)2004-05-04 10:28:39 在 VC/MFC / 界面 提问

代码如下,我是想在要保存的地方复制一个Result.mdb这个文件,改个名。  
  可是执行结果是,出现一个给定名字的的文件,但只有0字节。而且单步执行时发现,a为0,表示CopyFile失败,怎么回事呢?Result.mdb文件的路径没错  
   
  CFile   file;  
  CString   m_FileName;  
  CFileDialog   m_FileOpen(FALSE,".mdb",NULL,OFN_OVERWRITEPROMPT,"Result   Files(*.mdb)|*.mdb|所有文件(*.*)|*.*||");  
  if(m_FileOpen.DoModal()==IDOK){  
  m_FileName=m_FileOpen.GetPathName();  
  }  
   
  CString   m_Path=m_FileName.Left(m_FileName.ReverseFind('\\'));  
   
  CString   strFileName="C:\\project\\Files\\Result.mdb";  
   
  LPCTSTR   lpNewFileName   =   (LPCTSTR)(m_FileName);  
  int   a=CopyFile(  
  (LPCTSTR)strFileName,     //   pointer   to   name   of   an   existing   file  
  lpNewFileName,     //   pointer   to   filename   to   copy   to  
  FALSE             //   flag   for   operation   if   file   exists  
  ); 问题点数:50、回复次数:8Top

1 楼sgnaw(李逍遥)回复于 2004-05-04 10:51:59 得分 0

CopyFile   路径的参数有误,即   strFileName   不对,你可以使用绝对路径,即:  
   
  CString   m_Path   =   m_FileOpen.GetFileName();Top

2 楼xhmhit(祁儿)回复于 2004-05-04 10:58:35 得分 0

strFileName所在的路径是固定的,而且与FileOpen是无关的呀Top

3 楼sgnaw(李逍遥)回复于 2004-05-04 11:00:43 得分 0

哦,是的,应该是   m_Path   ,即:  
  m_Path   =   m_FileOpen.GetFileName();Top

4 楼xhmhit(祁儿)回复于 2004-05-04 11:03:56 得分 0

m_Path与拷贝文件是无关的:(  
  没用到过Top

5 楼sgnaw(李逍遥)回复于 2004-05-04 11:09:43 得分 50

反正就是第二个参数有问题,就下面这样就   OK   了:  
  void   CDialog2::OnMyCopyFile()    
  {  
      CFile   file;  
      CString   m_FileName;  
      CFileDialog   m_FileOpen(FALSE,".mdb",NULL,OFN_OVERWRITEPROMPT,"Result   Files(*.mdb)|*.mdb|所有文件(*.*)|*.*||");  
      if(m_FileOpen.DoModal()==IDOK){  
      m_FileName=m_FileOpen.GetPathName();  
      }  
   
      CString   m_Path=m_FileName.Left(m_FileName.ReverseFind('\\'));  
   
      CString   strFileName="C:\\project\\Files\\Result.mdb";  
   
      LPCTSTR   lpNewFileName   =   (LPCTSTR)(m_FileName);  
      int   a=CopyFile(  
      (LPCTSTR)strFileName,     //   pointer   to   name   of   an   existing   file  
      m_FileName,     //   pointer   to   filename   to   copy   to  
      FALSE             //   flag   for   operation   if   file   exists  
      );  
  }Top

6 楼sgnaw(李逍遥)回复于 2004-05-04 11:13:08 得分 0

你的   Result.mdb   文件是不是不在   C:\project\Files   目录下啊?Top

7 楼xhmhit(祁儿)回复于 2004-05-04 11:19:27 得分 0

在呀  
  你写的那一段跟我那个是不是就把lpNewFileName   改成m_FileName了吗?Top

8 楼xhmhit(祁儿)回复于 2004-05-04 11:20:33 得分 0

执行完了会出现一个.mdb的文件,但是只有0字节,其中没有内容,也不能用access打开Top

相关问题

  • 怎么使用CopyFile()函数?
  • API中,COPYFILE函数怎么用?
  • enumwindows函数怎么用?
  • 怎么用Shell_NotifyIcon函数
  • 函数指针怎么用?
  • val函数怎么用啊!!
  • decade函数怎么使用?
  • SETWINDOWPOS API函数怎么用
  • Seek函数怎么用?
  • ShellWindows函数怎么用?

关键词

  • 文件
  • 执行
  • copyfile
  • fileopen
  • 路径
  • mdb
  • strfilename
  • filename
  • lpctstr
  • cstring

得分解答快速导航

  • 帖主:xhmhit
  • sgnaw

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo