⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于MFC大型数据处理方法.htm

📁 VC文件的读写操作(很多)
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0046)http://www.vcfan.com/vc/example/0602/60212.htm -->
<HTML><HEAD><TITLE>程序家园--vc编程--程序示例</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
	FONT-SIZE: 9pt
}
A:hover {
	FONT-SIZE: 9pt; COLOR: #33ff33
}
</STYLE>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY background="" onload=showtime(0)>
<TABLE height=784 cellSpacing=0 cellPadding=0 width=633 border=0>
  <TBODY>
  <TR>
    <TD width=17 height=48>&nbsp;</TD>
    <TD width=709 height=48>
      <TABLE height=50 cellSpacing=0 cellPadding=0 width=470 align=center 
      border=0>
        <TBODY>
        <TR>
          <TD width=124 height=53>
            <P><FONT color=#0000ff>程序家园-vc编程技巧</FONT></P>
            <P>
            <SCRIPT language=JavaScript>         
 today=new Date();
 function initArray(){
   this.length=initArray.arguments.length
   for(var i=0;i<this.length;i++)
   this[i+1]=initArray.arguments[i]  }
   var d=new initArray(
     "星期日",
     "星期一",
     "星期二",
     "星期三",
     "星期四",
     "星期五",
     "星期六");
document.write(
     "<font color=##0000FF style='font-size:9pt;font-family: 宋体'> ",
     today.getYear(),"年",
     today.getMonth()+1,"月",
     today.getDate(),"日   ",
     d[today.getDay()+1],
     "</font>" ); 
</SCRIPT>
            </P></TD>
          <TD width=183 height=53>
            <DIV align=center><IMG height=30 src="基于MFC大型数据处理方法.files/pjqsl.jpg" 
            width=150></DIV></TD>
          <TD width=153 height=53>
            <FORM name=clock>
            <P><FONT color=#0000ff>你在本页时间</FONT> <INPUT 
            style="FONT-SIZE: 9pt; COLOR: #0000ff" size=7 name=face>
            <SCRIPT language=JavaScript>
  var timerID=null
  function showtime(seed){
    if (seed>=0){ 
        seed++;  
        mod=seed%3600;  
        hours=(seed-mod)/3600  
        seconds=mod%60 
        minutes=(seed-3600*hours-seconds)/60; 
        var timeValue=""+((hours < 10)?"0":"")+hours  
        timeValue+=((minutes < 10)?":0":":")+minutes  
        timeValue+=((seconds < 10)?":0":":")+seconds 
        document.clock.face.value=timeValue;  
        var cmd="showtime("+seed+")";
        timeID=window.setTimeout(cmd,1000);  }}
</SCRIPT>
             </P></FORM></TD></TR></TBODY></TABLE></TD>
    <TD width=11 height=48>&nbsp;</TD></TR>
  <TR>
    <TD width=17 height=650>&nbsp;</TD>
    <TD width=709 height=650>
      <TABLE borderColor=#ffcc99 height=650 cellSpacing=0 cellPadding=0 
      width=535 align=center border=1>
        <TBODY>
        <TR>
          <TD height=11>
            <BLOCKQUOTE>
              <DIV align=center>
              <P>基于MFC的大型数据文件处理方法 </P></DIV></BLOCKQUOTE></TD></TR>
        <TR>
          <TD>
            <P><BR>在Visual 
            C++中,MFC(微软基础类库)提供了CFile和CStdio<BR>File两个类来进行程序中的文件输入输出操作。Cfile类提供了基于二<BR>进制流的文件操作,功能类似于C语言中的fread()和fwrite()函<BR>数。CStdioFile提供了基于字符串流的文件操作,功能类似于C语言中<BR>的fgets()和fputs()函数。但是,使用这两个类进行文件操作时<BR>,对于一次文件读写的数据量的大小必须限制在65535字节以内。其原<BR>因是在VC中访问大于65535字节的缓冲区需要Huge型指针,而在CFile<BR>和CStdioFile类中,使用的是Far型的指针。由于Far型指针不具有跨<BR>段寻址的能力,因此限制了一次文件读写的长度小于65535字节。如果<BR>传递给CFile和CStdioFile两个类的成员函数的数据缓冲区的大小大于<BR>65535字节的时候,VC就会产生ASSERT错误。<BR>笔者在使用Visual 
            C++进行多媒体程序设计的时候,由于程序<BR>处理的数据量非常大,所以需要频繁地读写大于65535字节的数据。在<BR>使用CFile和CStdioFile类处理巨型数据的时候一般是分段读写,笔者<BR>感到这样的处理方法非常地繁琐,同时容易导致程序编制错误。笔者<BR>在查阅了相关的文献以后,找到了使用Visual 
            C++直接读写巨型数<BR>据的方法。<BR>在MFC的CFile类中提供了两个未载入文档的函数,其原型声明在<BR>AFX.H中。函数原型如下:<BR>DWORD 
            CFile::ReadHuge(void FAR *lpBuffer,DWORD dwCo<BR>unt);<BR>void 
            CFile::WriteHuge(const void FAR*lpBuffer,DWORD 
            <BR>dwCount);<BR>在这两个函数内部使用的都是Huge型指针来对传递的缓冲区进行<BR>寻址,因此可以读写大于65535字节的巨型数据。<BR>对于ReadHuge()和WriteHuge()函数需要的巨型缓冲区可以使<BR>用Windows的API函数GobalAlloc()来创建。<BR>作为一个例子,下面的程序段演示了通过使用Read

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -