怎么在MFC里以当前时间为文件名输入?

timeyg 2012-10-24 10:36:27
小弟想实现以当前时间为文件名生成TXT文本,例如2012_10_23.txt,其实功能差不多实现了,可以把当前时间数据输入进TXT文件里面保存,但是想把当前时间作为文件名保存的时候遇见了问题,老是会报错,是弹出警告框的那种报错,生成txt文件的语句如下:


file.Open(_T("D:\\数据输出.txt"),CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);



我查了Open的定义,
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags,CFileException* pError = NULL);


请教各位高手,怎么修改呢?
...全文
203 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_wei 2012-10-24
  • 打赏
  • 举报
回复
你要现有文件才能在打开。。。
timeyg 2012-10-24
  • 打赏
  • 举报
回复
好吧,那个指向ASSERT(m_pStream != NULL);
的问题还是存在,
连我用fopen("d:\\filename.txt","a+");都会出现这个报错
我在想是不是有什么文件冲突或者关于文件的只读只写的设置一类的问题?
难道这个问题不是代码的事情,是文件冲突吗?
zhousitiaoda 2012-10-24
  • 打赏
  • 举报
回复
关于CFile::typeText MSDN上描述如下
CFile::typeText Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only).
如果加上,程序崩掉,定位到出错处
ASSERT((nOpenFlags & typeText) == 0); // text mode not supported
我用的VS2005,所以CFile::typeText还是别用了
zhousitiaoda 2012-10-24
  • 打赏
  • 举报
回复

CTime tm = CTime::GetCurrentTime();
CString str2;
str2.Format(_T("D:\\%d_%d_%d.txt"),tm.GetYear(),tm.GetMonth(),tm.GetDay() );
CFile file;
file.Open(str2,CFile::modeCreate |CFile::modeNoTruncate |CFile::modeWrite);
timeyg 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

file.Open(_T("D:\\数据输出.txt"),CFile::modeCreate |CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);
试试。。
[/Quote]谢谢您关注,是这样的
本来我想用这样的语句
CString str2;
str2.Format(_T("C:\\qiguai.txt"));
file.Open(str2,CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);
报错
然后改成str2.Format("C:\\qiguai.txt");
还是报错
我百度有人说CString格式不对,然后用了
char buf[256];
memcpy(buf, "wenti.txt");
file.Open(buf,CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);
还是报错,是哪种弹出的错误,问题指向下面这句话
ASSERT(m_pStream != NULL);
我查了一个英文的似乎和我的问题有点想象,网址在这http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/891b129d-77d5-4e07-a41c-9fdab0fce8a9
,但是解决办法还是不对,我试了这么多种,现在超级纠结
我的核心问题是
file.Open(_T("D:\\数据输出.txt"),CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);
这句话用于生成一个TXT文件,这句话没有错,可以在D盘生成数据输出.txt
但是我现在想在指定位置比方说D盘根目录下生成以当前时间作为文件名的文件
如 2012_10_23.txt,我该怎么生成呢?
zhousitiaoda 2012-10-24
  • 打赏
  • 举报
回复
file.Open(_T("D:\\数据输出.txt"),CFile::modeCreate |CFile::modeNoTruncate |CFile::modeWrite |CFile::typeText);
试试。。
timeyg 2012-10-24
  • 打赏
  • 举报
回复
终于搞定了,shen_wei兄说的对,刚才必须是现有文件打开,zhousitiaoda兄给了非常详细的代码,谢谢两位的帮忙,结贴。
timeyg 2012-10-24
  • 打赏
  • 举报
回复
四楼和六楼的两位说的都对,谢谢你们了,我刚才出去吃饭了,再改下看看

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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