首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

跪求原因?快来围观!解决方法

2012-02-02 
跪求原因?快来围观!//这代码编译通过,运行删除失败,换了编译器还是不行,到底是什么问题,跪求解???????//再

跪求原因?快来围观!
//这代码编译通过,运行删除失败,换了编译器还是不行,到底是什么问题,跪求解???????
//再次谢谢zzbinfo大哥
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//打开文件  
#define open_file(x)\
{\
  hFile_##x=::CreateFile(file_##x,GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);\
  if(hFile_##x==INVALID_HANDLE_VALUE)\
  {\
  printf("无法dd打开文件 %s!",file_##a);\
  system("pause");\
  exit(1);\
  }\
  hMap_##x=::CreateFileMapping(hFile_##x,NULL,PAGE_READONLY,0,0,NULL);\
  lpBase_##x=::MapViewOfFile(hMap_##x,FILE_MAP_READ,0,0,0);\
}
//关闭文件  
#define close_file(x)\
{\
  ::UnmapViewOfFile(lpBase_##x);\
  CloseHandle(hFile_##x);\
}  


int main(void)
{
HANDLE hFile_b;
HANDLE hMap_b;
HANDLE lpBase_b;
char *file_b="b.txt";
char *file_a="b.txt";

  open_file(b);//打开B文件
  close_file(b);//关闭文件B  

  if(remove("b.txt"))
  printf("删除失败\n");
  else printf("OK \n");  
}

[解决办法]
哈哈,你咋还没有弄成呀,不行就把你的全部文件发过来,我看看。zzbinfo#163.com
[解决办法]
XT,这么个需求,发了300分的帖子都没有搞定啊?把工程发我信箱,我来look一下。cbfans at 163 dot com
[解决办法]
晕,少关了一个句柄,文件没有关闭,所以删除不了,更改如下即可:
//关闭文件
#define close_file(x)\
{\
if(lpBase_##x) ::UnmapViewOfFile(lpBase_##x);\
if(hMap_##x) CloseHandle(hMap_##x);\
if(hFile_##x) CloseHandle(hFile_##x);\
}

别忘了,CreateFileMapping打开的句柄没有CloseHandle.

热点排行