typedef struct testData
{
 char szName[16];
 int  iHashValue;
}TestData;内存映射,用MEMCPY将数据写入。但MEMCPY写入的方式是替换式的,就是写入后一个数据,前面的数据就被替换掉了。如何不断地写入数据,而前面的数据都在,就是不断追加。

解决方案 »

  1.   


     LPVOID   Addr=MapViewOfFile(hMap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);   
          if(Addr!=NULL)   
          {   
              char   *Buf;   
        
              Buf=Memo1->Lines->Text.c_str();   
              CopyMemory(Addr,(const   VOID*)Buf,Memo1->Lines->Text.Length());   
              Buf=(char*)Addr;   
              Buf[Memo1->Lines->Text.Length()]='\0';     //注意不能少这一步   
        
              UnmapViewOfFile(hMap);   
          }   
      

  2.   

    ??????????????????????????完整原帖???????????????????????????
    写:   
        
          LPVOID   Addr=MapViewOfFile(hMap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);   
          if(Addr!=NULL)   
          {   
              char   *Buf;   
        
              Buf=Memo1->Lines->Text.c_str();   
              CopyMemory(Addr,(const   VOID*)Buf,Memo1->Lines->Text.Length());   
              Buf=(char*)Addr;   
              Buf[Memo1->Lines->Text.Length()]='\0';     //注意不能少这一步   
        
              UnmapViewOfFile(hMap);   
          }   
        
      读:   
        
          LPVOID   Addr=MapViewOfFile(hMap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);   
          if(Addr!=NULL)   
          {   
              char   *Buf;   
        
              Buf=(char*)Addr;   
              Memo1->Lines->Text=AnsiString(Buf);   
              UnmapViewOfFile(hMap);   
          }
    ?????????????????????????????????????????????????????????????????????
      

  3.   

    或者考虑使用ACE,那上面的API或许可以做到追加数据的功能