哪位仁兄给个二进制文件操作(写、读)的范例。多谢了。

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/4820/4820982.xml?temp=.8072931
      

  2.   

    var
      iTextLen,iPicSize :integer;
      sTextLen,sPicSize :string;
      sText,sPic :string;
      pContent :pchar;
      SrcFile,DestFile :file;            //1.写文本文件
                //1-1.写文本信息和图象信息的大小,前8个字节。
                try
                  AssignFile(SrcFile, sFileFullName);
                  if Not FileExists(sFileFullName) then ReWrite(SrcFile)
                  else Reset(SrcFile, 4);
                  BlockWrite(SrcFile, sTextLen, 4);
                  BlockWrite(SrcFile, sPicSize, 4);
                  CloseFile(SrcFile);
                except
                  Result :=False;
                  Exit;
                end;
                //1-2.写文本信息内容。
                try
                  AssignFile(SrcFile, sFileFullName);
                  if Not FileExists(sFileFullName) then ReWrite(SrcFile)
                  else ReSet(SrcFile);
                  BlockWrite(SrcFile, sText, SizeOf(sText), BytesWritten);
                  CloseFile(SrcFile);
                except
                  Result :=False;
                  Exit;
                end;            //2.写图片文件,图片已保存在fTemp中
                //实现相当于文件的拷贝,即将文件追加到已有的二进制文件中            AssignFile(SrcFile, fTemp);
                AssignFile(DestFile, sFileFullName);
                Reset(SrcFile, 1);
                try
                  if not FileExists(sFileFullName) then
                    Rewrite(DestFile, 1)
                  else begin
                    Reset(DestFile, 1);
                    Seek(DestFile, FileSize(DestFile));
                  end;
                  try
                    repeat
                      BlockRead(SrcFile, pContent, Sizeof(pContent), BytesRead);
                      if BytesRead > 0 then begin
                        BlockWrite(DestFile, pContent, BytesRead, BytesWritten);
                        if BytesRead <> BytesWritten then begin
                          Result := false;
                          Exit;
                        end;
                      end;
                    until BytesRead = 0;
                  except
                    Erase(DestFile);
                    Result := false;
                    Exit;
                  end;
                finally
                  CloseFile(DestFile);
                  CloseFile(SrcFile);
                  DeleteFile(pChar(fTemp));//保存是否成功都将临时文件删除
                end;