| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 785 人关注过本帖
标题:哪类程序可以通过浏览文件将任意类型的文件存到buffer中用于文件的传输?
只看楼主 加入收藏
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
哪类程序可以通过浏览文件将任意类型的文件存到buffer中用于文件的传输?
mfc程序,我想在做的基础是硬件上两台PC机之间通过profibus-dp的硬件相连,但mfc程序不需要处理profibus-dp的协议,协议已经做好了,给出了一些需要调用的API函数。我想在两台PC机之间传任意格式的文件。

关于硬件我有他windows的驱动,和一些API函数的接口。

  我现在已经基本实现了把数据库中的数据读到我的buffer并且调用profibus-dp的API函数,把数据发送到另一台PC机,而且通过调用API函数把收到的数据放到我自己的buffer,并在对话框中显示。

但老师要求传任意格式的文件,我还是想不通,我刚入门希望各位给帮个忙。比如说一个word文件,我如何把他以二进制形式放到我自己定义的buffer中?

自己接收buffer中的数据又如何还原成word文档?
搜索更多相关主题的帖子: windows 对话框 数据库 而且 
2011-12-07 20:18
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:20 
CFile类将word文件以二进制方式打开,读取转送,同时需要你把文件名也传过去。

我们都在路上。。。。。
2011-12-08 11:47
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
收藏
得分:0 
以下是引用hellovfp在2011-12-8 11:47:20的发言:

CFile类将word文件以二进制方式打开,读取转送,同时需要你把文件名也传过去。

恩,有点明白了,今天看了一下对文件的操作
2011-12-08 20:16
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
收藏
得分:0 
回复 2楼 hellovfp
帮我看看一下哪里有问题号码?
程序代码:
char *pBuf;
DWORD dwFileLen;
//FileInfo staff;
void CHanjxDlg::OnOpenFile() 
{
    // TODO: Add your control notification handler code here    
    //filename=openfile.GetFileName();

    CFileDialog fileDlg(TRUE);
    fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0";
    //fileDlg.m_ofn.lpstrDefExt="doc";
    if (IDOK==fileDlg.DoModal())
    {
        CFile file(fileDlg.GetFileName(),CFile::typeBinary);
        //char *pBuf;
        //DWORD dwFileLen;
        dwFileLen=file.GetLength();
        pBuf=new char[dwFileLen+1];
        pBuf[dwFileLen]=0;
        file.Read(pBuf,dwFileLen);
        file.Close();
        //MessageBox(pBuf);
    }    
}

void CHanjxDlg::OnSend() 
{
    // TODO: Add your control notification handler code here
    CFileDialog fileDlg(FALSE);
    fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0";
    
    if (IDOK==fileDlg.DoModal())
    {
        CFile file(NULL,CFile::modeWrite);
        file.Write(pBuf,dwFileLen);
        file.Close();
        //MessageBox(pBuf);
    }
}
2011-12-12 10:27
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
收藏
得分:0 
以下是引用shixi2011在2011-12-12 10:27:59的发言:

帮我看看一下哪里有问题号码?
char *pBuf;
DWORD dwFileLen;
//FileInfo staff;
void CHanjxDlg::OnOpenFile()
{
    // TODO: Add your control notification handler code here   
    //filename=openfile.GetFileName();

    CFileDialog fileDlg(TRUE);
    fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0";
    //fileDlg.m_ofn.lpstrDefExt="doc";
    if (IDOK==fileDlg.DoModal())
    {
        CFile file(fileDlg.GetFileName(),CFile::typeBinary);
        //char *pBuf;
        //DWORD dwFileLen;
        dwFileLen=file.GetLength();
        pBuf=new char[dwFileLen+1];
        pBuf[dwFileLen]=0;
        file.Read(pBuf,dwFileLen);
        file.Close();
        //MessageBox(pBuf);
    }   
}

void CHanjxDlg::OnSend()
{
    // TODO: Add your control notification handler code here
    CFileDialog fileDlg(FALSE);
    fileDlg.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0";
   
    if (IDOK==fileDlg.DoModal())
    {
        CFile file(NULL,CFile::modeWrite);
        file.Write(pBuf,dwFileLen);
        file.Close();
        //MessageBox(pBuf);
    }
}

调试的时候总出错
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-12-12 10:29
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
你在用CFile时写文件时文件名没有给。所以报错。

偶写了一段CFile示例代码:
    CFileDialog cfd(TRUE);
    cfd.m_ofn.lpstrFilter = "MS WORD(*.doc)\0*.doc\0*.jpg\0All File(*.*)\0*.*\0\0";
    if(IDOK == cfd.DoModal())
    {
        CFile file;
        file.Open(cfd.GetFileName(), CFile::modeRead|CFile::typeBinary);


        DWORD fileLen = file.GetLength();
        char *buf = new char[fileLen + 1];
        DWORD readLen = file.Read(buf, fileLen);
        file.Close();

        CFileDialog saveFile(FALSE);
        saveFile.m_ofn.lpstrFilter="Text Files(*.doc)\0*.doc\0All File(*.*)\0*.*\0\0";

        if( IDOK == saveFile.DoModal() )
        {
            file.Open(saveFile.GetPathName(), CFile::modeWrite|CFile::typeBinary|CFile::modeCreate);
            file.Write(buf,fileLen);
            file.Close();
        }
        delete[] buf;
}

虽然偶不懂MFC,但这段代码可以达到你想要的目的,读写word文件通过测试。

我们都在路上。。。。。
2011-12-12 12:28
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
收藏
得分:0 
回复 6楼 hellovfp
我已将找到了谢谢了
file(NULL,CFile::modeWrite);不应该是NULL
应该是fileDlg.GetFileName()
已经能实现功能了
2011-12-12 13:36
shixi2011
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2011-5-12
收藏
得分:0 
回复 2楼 hellovfp
你好,我有一个新的问题,能看一下吗?
https://bbs.bccn.net/viewthread.php?tid=357648&extra=page%3D1&frombbs=1
2011-12-13 11:06
快速回复:哪类程序可以通过浏览文件将任意类型的文件存到buffer中用于文件的传输 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041575 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved