procedure TForm1.Button1Click(Sender: TObject);var
     f: file of Byte;
     size : Longint;
    begin
     AssignFile(f, 'c:\js.exe');
     Reset(f);
     size := FileSize(f);
     edit1.text := IntToStr(size);
     CloseFile(f);
end;例如上面的.如果把C:\JS.EXE文件设置为只读后.当然按Button1会出错.
怎么才能让程序读取到只读的文件??

解决方案 »

  1.   

    只读文件?
    先获得文件属性,如果是只读文件,去掉只读属性,然后再操作,操作完了之后再添加只读属性获得属性的函数FileGetAttr
    设置属性的函数FileSetAttrprocedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      i := FileGetAttr('d:\temp\dd.txt');//获得文件属性
      if i and  fareadonly  <> 0 then//如果是只读文件
         FileSetAttr('d:\temp\dd.txt',i-fareadonly)//去掉只读属性
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      F: TFileStream;
    begin
      F := TFileStream.Create('c:\js.exe', fmOpenRead);
      edit1.text := IntToStr(F.size);
      F.Free;
    end;
      

  3.   

    如果是我,也是用API实现
    openfile
      

  4.   

    用API实现,可以设置打开模式。
    ASSIGN的话就是直接打开了。
      

  5.   

    用 TFileStream, 或者用 FileOpen,FileRead,FileClose