怎样使用API读(包括建立)、写、查找二进制文件?

解决方案 »

  1.   

    function CreateNullFile(AFileName: String): Boolean;  //建立空的文件
    var
      HFILE: THandle;
    begin
      HFILE := CreateFile(PChar(AFileName), GENERIC_READ, FILE_SHARE_READ, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
      if HFILE <> INVALID_HANDLE_VALUE then
      begin
        CloseHandle(HFILE);
        Result := True;
      end
      else
        Result := False;
    end;
      

  2.   

    procedure OpenForShare(const FileName: String);var
      FileHandle : Integer;
    begin
      FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
      if FileHandle > 0 then
        {valid file handle}
      else
        {Open error: FileHandle = negative DOS error code}
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);var
      iFileHandle: Integer;
      iFileLength: Integer;
      iBytesRead: Integer;
      Buffer: PChar;
      i: Integer
    begin
      if OpenDialog1.Execute then
      begin
        try
          iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
          iFileLength := FileSeek(iFileHandle,0,2);
          FileSeek(iFileHandle,0,0);
          Buffer := PChar(AllocMem(iFileLength + 1));
          iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
          FileClose(iFileHandle);      for i := 0 to iBytesRead-1 do
          begin
            StringGrid1.RowCount := StringGrid1.RowCount + 1;
            StringGrid1.Cells[1,i+1] := Buffer[i];
            StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
          end;
        finally
          FreeMem(Buffer);
        end;
      end;
    end;