新手求助 EVC下将文件内容输出到编辑框程序问题

glj1001   2009-11-24 09:19 楼主
想选择路径打开文件 将内容输出到编辑框 程序运行弹出一个对话框 显示叉号和乱码  
void CTCPClientExDlg::Sendfile()
{
   CFile MyFile;
   TCHAR str[100];
   DWORD count;
   UpdateData(true);
   CFileDialog FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T("All Files(*.*)|*.*||"));
       if(FileDlg.DoModal()==IDOK)
        {
             m_FileName=FileDlg.GetPathName();
            MyFile.Open (_T("\\m_FileName"),CFile::modeRead);           //打开文件
             long sendlen =MyFile.GetLength() ;                        //得到文件长度
             count=MyFile.Read (str,sendlen);                                //读文件
            m_Content=str;                                                 //将文件内容输出到编辑框
            MyFile.Close ();                                        //关闭文件
            UpdateData(false);                                        //更新显示
            AfxMessageBox(_T("Read OK"));                                 //输出读成功消息
     
         }   
}
大家帮忙看看程序吧 新手求助

回复评论 (14)

帮忙顶贴!!!
点赞  2009-11-24 09:51
建议楼主考虑一下编码的问题,在WinCE下显示必须是UNICODE编码。
点赞  2009-11-24 10:14
楼上能不能详细说说
我现在出来打开文件对话框 选择文件后就弹出一个对话框 显示叉号和乱码 我选择的是.dat文件 里面就几个字母而已
点赞  2009-11-24 10:43
改用VS2005,很好用的
点赞  2009-11-24 10:44
引用: 引用 4 楼 hpp6699 的回复:
改用VS2005,很好用的


工具改变不了这个问题的

主要是 Unicode的问题。因为文本通常是ANSI的,要CE下显示必须使用Unicode,需要调用字符转换函数。
具体的函数名不记得了,google一下就可以找到。
点赞  2009-11-24 10:55
但是我的开发板带的实例都是EVC的 我是拿开发板带的TCP/IP的例子改的 不仅要打开文件 主要是想传输的
点赞  2009-11-24 10:56
MyFile.Open (_T("\\m_FileName"),CFile::modeRead);          //打开文件
要使用绝对路径
点赞  2009-11-24 11:40
准备一段buf,如char szBuf[256];
将文件内容读取到szBuf中,
定义一个CString s;
s.Format(_T("%S"),szBuf);//注意是大写的S
显示s即可。
点赞  2009-11-24 12:01
引用: 引用 7 楼 cfanlwn 的回复:
MyFile.Open (_T("\\m_FileName"),CFile::modeRead);? ? ? ? ? //打开文件
要使用绝对路径
李MM 在wince下是要用绝对路径 现在我想的是选择一个文件代开 用绝对路径该怎么表示呢
点赞  2009-11-24 14:55
引用: 引用 8 楼 sunrain_hjb 的回复:
准备一段buf,如char szBuf[256];
将文件内容读取到szBuf中,
定义一个CString s;
s.Format(_T("%S"),szBuf);//注意是大写的S
显示s即可。
我把文件内容读取到szBuf中
szBuf=MyFile.Read (str,sendlen); 报错
error C2440: '=' : cannot convert from 'unsigned int' to 'unsigned short [256]'
错误看明白了 该怎么改呢
点赞  2009-11-24 15:00
根据大家的意见 程序改成
void CTCPClientExDlg::OnSendfile()
{
        CFile MyFile;
        TCHAR str[100];
        DWORD count;
        CHAR  szBuf[256];
        UpdateData(true);
        CString s;
        MyFile.Open (_T("\\qwe.dat"),CFile::modeRead);
        //long sendlen =MyFile.GetLength() ;                     //得到文件长度
         count=MyFile.Read ( szBuf,   sizeof(szBuf));        //读文件
         s.Format(_T("%S"),szBuf);                        //注意是大写的S
        m_SendEdit=s;                                        //将文件内容输出到编辑框
        MyFile.Close ();                                //关闭文件
        UpdateData(false);                                //更新显示
        AfxMessageBox(_T("Read OK"));                        //输出读成功消息            
}
但是现在直接出来  Read OK  对话框 ,没有把文件内容输出到编辑框啊 大家帮忙看看
点赞  2009-11-24 16:07
引用: 引用 9 楼 l840828 的回复:
引用 7 楼 cfanlwn 的回复:
MyFile.Open (_T("\\m_FileName"),CFile::modeRead);? ? ? ? ? //打开文件
要使用绝对路径
李MM 在wince下是要用绝对路径 现在我想的是选择一个文件代开 用绝对路径该怎么表示呢
你打开文件,这个文件也有路径啊,通过软件是可以得到它的路径的
void GetCurrentDirectory(CString &szPath)
{
wchar_t pBuf[256];
GetModuleFileName(NULL,pBuf,sizeof(pBuf)/sizeof(wchar_t));
szPath=pBuf;
szPath = szPath.Left(szPath.ReverseFind('\\')+1);
}
点赞  2009-11-24 17:22
引用: 引用 11 楼 l840828 的回复:
根据大家的意见 程序改成
void CTCPClientExDlg::OnSendfile()
{
        CFile MyFile;
        TCHAR str[100];
        DWORD count;
        CHAR? szBuf[256];
? ? ? ? UpdateData(true);
        CString s;
        MyFile.Open (_T("\\qwe.dat"),CFile::modeRead);
? ? ? ? //long sendlen =MyFile.GetLength() ;                ? ?  //得到文件长度
? ? ? ?  count=MyFile.Read ( szBuf,?  sizeof(szBuf));        //读文件
? ? ? ?  s.Format(_T("%S"),szBuf);? ? ? ? ? ? ? ? ? ? ? ? //注意是大写的S
? ? ? ? m_SendEdit=s;                                        //将文件内容输出到编辑框
        MyFile.Close ();                                //关闭文件
        UpdateData(false);                                //更新显示
        AfxMessageBox(_T("Read OK"));                ? ? ? ? //输出读成功消息
}
但是现在直接出来? Read OK? 对话框 ,没有把文件内容输出到编辑框啊 大家帮忙看看

我用你这样的方法 是可以把内容输出出来的啊  是不是你的编辑框在类向导中没有定义m_SendEdit
点赞  2009-11-24 17:24
测试OK了,可以参考一下
  CFile MyFile;
  CString m_FileName;

  CFileDialog FileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T("All Files(*.*)|*.*||"));
     
if(FileDlg.DoModal()==IDOK)
{

                 m_FileName=FileDlg.GetPathName();
               
                 MyFile.Open (m_FileName,CFile::modeRead);  //打开文件

                DWORD sendlen =MyFile.GetLength() ; //得到文件长度
                CHAR *szBuf=new CHAR [sendlen];//开辟存储空间
                MyFile.Read ( szBuf,  sendlen); //读文件

        m_Content.Format(_T("%S"),szBuf);                        //注意是大写的S
                MyFile.Close (); //关闭文件
                UpdateData(false); //更新编辑框显示
                AfxMessageBox(_T("Read OK")); //输出读成功消息
        delete []szBuf;//清除存储空间

}
点赞  2009-11-24 17:53
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复