我找的一个文件加解密的例子供你参考一下:function TForm1.DoDecrypt(InFile: string): Boolean;var FFile: TFileStream; FMems: TMemoryStream; hMapFile: THandle; pMapFile: Pointer;//PByte; pSrc, pDest: PByte; I: Integer;begin Result := False; if not FileExists(InFile) then Exit;// raise Exception.Create('File does not exist.')// else FFile := TFileStream.Create(InFile, fmOpenRead); if not Assigned(FFile) then Exit;// raise Exception.Create('Failed to create file stream.'); try FMems := TMemoryStream.Create; //用你的加密处理代替下面的这一句; FMems.LoadFromStream(FFile); //Descrypt(FFile, FMems); finally FFile.Free; //释放文件流; end; try //创建一个(没有文件对应的)特殊的内存映射文件; hMapFile := CreateFileMapping( DWord(-1), //要映射的文件句柄,此处为无文件; nil, //指向一个结构,指明是否可被子进程继承; PAGE_READWRITE, //保护模式(权限); 0, FMems.Size, //内存映射文件大小的高、低字节; nil); //内存映射文件对象的名字; if hMapFile = 0 then Exit; // raise Exception.Create('Failed to create file mapping'); try //创建一个内存映射文件的视图; pMapFile := MapViewOfFile( hMapFile, //内存映射文件对象句柄; FILE_MAP_ALL_ACCESS, //访问模式(权限); 0, 0, //开始映射的起始位置(高、低位); 0{FMems.Size}); //视图映射的字节数,为零时全部映射; if pMapFile = nil then Exit; // raise Exception.Create('Failed to map view of file'); finally CloseHandle(hMapFile); //释放内存映射文件对象句柄; end; try //复制解密后的内存流到内存映射文件中; //此处用Move函数处理是不行的,没有一次不发生异常; pSrc := PByte(FMems.Memory); pDest := PByte(pMapFile); for I := 1 to FMems.Size do begin pDest^ := pSrc^; Inc(pSrc); Inc(pDest); end; //或者用以下函数复制内存流到内存映射文件中; //StrCopy(PChar(pMapFile), PChar(ms.Memory)); //测试用,在此处使用内存映射文件; Memo1.Lines.Text := PChar(pMapFile); Result := True; finally UnmapViewOfFile(pMapFile); //释放内存映射文件的视图; end; finally FMems.Free; //释放内存流; end;end;