6765|17

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Wince5.0在存储卡上写文件失败? [复制链接]

   现在有一个基于WINCE5.0的GPS设备,想在他的存储卡上写一个临时文件保存信息
   开发环境是VS2005和开发板导出的SDK

   代码如下
  

  1. void WriteFileEx()
  2. {
  3.          HANDLE fHandle;
  4.         fHandle = ::CreateFile(L"SMMC\\DSA\\2.txt",GENERIC_WRITE,0,NULL,OPEN_ALWAYS  ,FILE_ATTRIBUTE_NORMAL,0);
  5.         if(fHandle == INVALID_HANDLE_VALUE)
  6.         {
  7.                 ::MessageBox(NULL,L"File Open Failed",L"Message",MB_OK);
  8.                 return;
  9.         }
  10.        
  11.         wchar_t *buffer = L"this is test\n";
  12.         DWORD writtenSize = 0;
  13.         BOOL bRet = ::WriteFile(fHandle,buffer,wcslen(buffer),&writtenSize,NULL);
  14.         if(bRet)
  15.         {
  16.                 //OutputDebugString(_T("WriteFile 写文件成功\r\n"));
  17.                 ::MessageBox(NULL,L"Written",L"Message",MB_OK);
  18.         }
  19.         ::CloseHandle(fHandle);
  20. }
  21.    
复制代码

    这段代码在CREATEFILE的时候就失败了
   
    麻烦大家帮我看一下到底是什么问题,是否是存储卡的路径错了?由于是已经制作好的机器,里面什么信息都看不到,第一次写WINCE程序,没什么经验,麻烦大家帮帮忙。
此帖出自WindowsCE论坛

最新回复

  非常感谢paul_chao!  详情 回复 发表于 2009-8-20 17:52
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
2.txt文件是否存在?
此帖出自WindowsCE论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
  用了OPEN_ALWAYS,文件不存在不是也会新建一个的吗
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
     E。。。大家帮帮忙呀。。刚开始做WINCE就碰到这种问题,太受打击了。。
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
哈, 才這樣就受到打擊了啊, 放心, 路還長的很呢

L"SMMC\\DSA\\2.txt" 改為
L"\\SMMC\\DSA\\2.txt"

試試看吧

不過路徑若是不在, CreateFile 不知會不會 Create Folder?? 試試看吧, 祝好運

Paul, Chao @ Techware
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 paul_chao 的回复:
哈, 才這樣就受到打擊了啊, 放心, 路還長的很呢

L"SMMC\\DSA\\2.txt" 改為
L"\\SMMC\\DSA\\2.txt"

試試看吧

不過路徑若是不在, CreateFile 不知會不會 Create Folder?? 試試看吧, 祝好運

Paul, Chao @ Techware



路径是存在的,我弹出了当前启动的EXE的完整路径,你说的\\SMMC\\DSA\\2.txt这个我也试过了,还是不行。
文件读写在编程方面是最基本的啊。现在连这个都做不了。。怎么能不受打击。
还是谢谢回复
此帖出自WindowsCE论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
关注结果。
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
用 GetLastError 去抓抓看

  1.      HANDLE fHandle;
  2.     fHandle = ::CreateFile(L"SMMC\\DSA\\2.txt",GENERIC_WRITE,0,NULL,OPEN_ALWAYS  ,FILE_ATTRIBUTE_NORMAL,0);
  3.     if(fHandle == INVALID_HANDLE_VALUE)
  4.     {
  5.         TCHAR szStr[256];
  6.         wsprintf(szStr, L"File Open Failed(%d)", GetLastError());
  7.         ::MessageBox(NULL,szStr,L"Message",MB_OK);
  8.         return;
  9.     }
复制代码


大家再來參詳參詳吧

Paul, Chao @ Techware

此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
    写入的问题已解决,可是写出来的文件,和实际写入的内容不一样,
    代码里面是THIS IS TEST,写入之后的文件变成了T H I S  I S,内容不完全而且还多出了空格,
宽字符写入有什么需要注意的吗?
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 paul_chao 的回复:
用 ? GetLastError ? 去抓抓看

  1. ? ? ? ? ? HANDLE ? fHandle;
  2. ? ? ? ? fHandle ? = ? ::CreateFile(L "SMMC\\DSA\\2.txt ",GENERIC_WRITE,0,NULL,OPEN_ALWAYS ? ? ,FILE_ATTRIBUTE_NORMAL,0);
  3. ? ? ? ? if(fHandle ? == ? INVALID_HANDLE_VALUE)
  4. ? ? ? ? {
  5. ? ? ? ? ? ? ? ? TCHAR ? szStr[256];
  6. ? ? ? ? ? ? ? ? wsprintf(szStr, ? L "File ? Open ? Failed(%d) ", ? GetLastError());
  7. ? ? ? ? ? ? ? ? ::MessageBox(NULL,szStr,L "Message ",MB_OK);
  8. ? ? ? ? ? ? ? ? return;
  9. ? ? ? ? }
复制代码


大家再來參詳參詳吧

Paul, ? Chao ? @ ? Techware




其实是一个很2的问题我都不好意思说……
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
::WriteFile(fHandle,buffer,wcslen(buffer),&writtenSize,NULL);
change to
::WriteFile(fHandle,buffer,wcslen(buffer)*sizeof(TCHAR),&writtenSize,NULL);

多空格, 應該不會, 請 LZ 把 ReadFile 的 code 一併貼出來吧

Paul, Chao @ Techware
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
  我是直接USB连上设备,记事本打开的,我试一下你上面的方法
此帖出自WindowsCE论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

13
 
更正, 應為
::WriteFile(fHandle,buffer,(wcslen(buffer)+1)*sizeof(TCHAR),&writtenSize,NULL);

Paul, Chao @ Techware
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 10 楼 paul_chao 的回复:
::WriteFile(fHandle,buffer,wcslen(buffer),&writtenSize,NULL);
change to
::WriteFile(fHandle,buffer,wcslen(buffer)*sizeof(TCHAR),&writtenSize,NULL);

多空格, 應該不會, 請 LZ 把 ReadFile 的 code 一併貼出來吧

Paul, Chao @ Techware



从C#转到C++来果然是项艰苦的工程
加上*sizeof(TCHAR)就对了,谢谢!
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

15
 
为什么还要加1?
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 13 楼 mylovefan 的回复:

从C#转到C++来果然是项艰苦的工程
加上*sizeof(TCHAR)就对了,谢谢!

[/quote]

果然年代有差, 有代溝了 ^_^y

[quote]引用 14 楼 mylovefan 的回复:

为什么还要加1?



最後一個結尾 '\0'

Paul, Chao @ Techware
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
   我知道\0,但是貌似加和不加没有什么区别啊。必须加1么
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

18
 
  非常感谢paul_chao!
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表