请问怎样以二进制的方式打开任何文件!

解决方案 »

  1.   

    用VC++6打开某文件时,选择Binary(默认是Auto)
      

  2.   

    function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;
      

  3.   

    流的方式可以,这是我做的一个图像处理的程序的一个函数,以流的方式读的,对读出来的数据按位处理:
    procedure AddJpeg(bitmap:TBitmap;var JPGFileName:string);
    var
        jpgfile:TFileStream;
        buffer:^byte;
        i,j,filesize:integer;
        P:pbytearray;
        temp:Longint;
    begin
        if jpgfilename='' then exit;
        try
            jpgfile := TFileStream.Create(jpgFileName,fmOpenRead);
        except
            jpgfile.Free;
        end;
        try
            i:=1;
            j:=0;
            buffer:=AllocMem(1);
            p:=bitmap.ScanLine[0];
            filesize:= jpgfile.Size ;
            temp:=floor(bitmap.Width*3/4)-3;
            while i<=filesize do
            begin
                jpgfile.Read(buffer^,1);
                if  (i mod temp)=0 then
                begin
                    inc(j);
                    if  j<=Bitmap.Height-1  then
                    begin
                        p[4*((i mod temp)-1)]  :=(p[4*((i mod temp)-1)] and $FC)  +((buffer^ and $C0) shr 6);   //将前2位保存在R的后2位上
                        p[4*((i mod temp)-1)+1]:=(p[4*((i mod temp)-1)+1] and $FC)+((buffer^ and $30) shr 4);//将3,4位保存在G的后3,4位上
                        p[4*((i mod temp)-1)+2]:=(p[4*((i mod temp)-1)+2] and $FC)+((buffer^ and $0C) shr 2);//将5,6位保存在G的后5,6位上
                        p[4*((i mod temp)-1)+3]:=(p[4*((i mod temp)-1)+3] and $FC)+((buffer^ and $03));//将7,8位保存在G的后7,8位上
                        p:=Bitmap.ScanLine[j];
                    end;
                end else
                begin
                        p[4*((i mod temp)-1)]  :=(p[4*((i mod temp)-1)] and $FC)  +((buffer^ and $C0) shr 6);   //将前2位保存在R的后2位上
                        p[4*((i mod temp)-1)+1]:=(p[4*((i mod temp)-1)+1] and $FC)+((buffer^ and $30) shr 4);//将3,4位保存在G的后3,4位上
                        p[4*((i mod temp)-1)+2]:=(p[4*((i mod temp)-1)+2] and $FC)+((buffer^ and $0C) shr 2);//将5,6位保存在G的后5,6位上
                        p[4*((i mod temp)-1)+3]:=(p[4*((i mod temp)-1)+3] and $FC)+((buffer^ and $03));//将7,8位保存在G的后7,8位上
                end;
                inc(i);
                jpgfile.Seek(0,1);
            end;
        finally
          jpgfile.Free;
          freemem(buffer);
        end;
        bitmap.Canvas.Pixels[bitmap.Width-1,bitmap.Height-1]:=filesize xor $FFFFFF;
    end;
      

  4.   

    打开任意二进制文件可以这样
    var
      F: File of Byte;
      ch: Byte;
    begin
      AssignFile(F,'C:\aa.dat');
      Reset(F);
      while not eof(F) do
      begin
        read(F,ch);  //然后作你的处理,要读一块的话用BlockRead
      end;
      CloseFIle(F);
    end;
      

  5.   

    看看Delphi对文件操作的部份(无类型文件)