求助释放很大的资源文件例如1G甚至10G的文件
如果用资源流释放 内存可能会达到1G 才能释放出来文件 
有没有别的办法可以实现?
我听说可以用createfilemapping + findrescoure 但是我不知道怎么写
希望拿为高手能解决下
最好再写个如何操作修改大文件的例子

解决方案 »

  1.   

    将资源文件单独做成一个dll,然后用CreateFileMapping之类的函数映射到内存,在得到资源
    具体做法看windows核心编程吧,有详细讲述的.
      

  2.   

    akirya  可以写个例子吗 我感觉这个比较有难度
    CreateFileMapping   我看了半天还搞不懂 意思
      

  3.   

    type
    PShareData   =   ^TSharedData;
          TSharedData   =   record   
              Count   :Word;   
              FileNames:array[1..MAX_PATH] of   ShortString;
          end;
    var
      SharedFile,HFile:THandle;
      hMapview:PChar;
      opBuf:TOFStruct;//参数
    const
      SharedFileName='MapTest';begin
    try
      HFile:=OpenFile('C:\Downloads\mir2install20071220.exe',opbuf,OF_READWRITE);//打开文件获得句柄
      if HFile=HFILE_ERROR then
        begin
          ShowMessage('open file failed!');
          Exit;
        end;    SharedFile:=CreateFileMapping(HFile,nil,PAGE_READONLY,      //创建文件映像 只读权限
                            0,Sizeof(TSharedData),SharedFileName);
       if SharedFile=0 then
        begin
          ShowMessage('mapping file failed code 1!');
          Exit;
        end;
       CloseHandle(hFile); //关闭文件句柄
       hFile:=0;
       hMapview:=MapViewOfFile(SharedFile,FILE_MAP_READ,0,0,0);//映射文件视图
       if(hMapview=nil) then
        begin
          ShowMessage('mapping view failed code 2!');
          Exit;
        end;
     ShowMessage(hMapview[0]+hMapview[1]);//输出文件第一个字
     UnmapViewOfFile(hMapview); //删除文件视图
      except
        MessageDlg('Error',mtError,[mbOK],0);//这个始终出现
      end;
    网上找的代码 我自己改了一下 可以读取文件头了  如何读指定位置的字符  和写入指定位置的字符
    还有如何把Pchar 保存到文件?