線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1487
推到 Plurk!
推到 Facebook!

請問為何無法開啟唯讀檔?

答題得分者是:johnnychang
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-27 08:39:36 IP:61.218.xxx.xxx 未訂閱
var INPUTFILE:file; begin AssignFile(INPUTFILE,'test.exe'); Reset(INPUTFILE,1); closefile(INPUTFILE); end; ======================================== 如果test.exe非唯讀屬性則一切正常,否則出現錯誤 但test.exe如果是在cdrom,勢必唯讀,請問有解嗎? 謝謝!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-27 09:25:53 IP:147.8.xxx.xxx 未訂閱
I think reset and rewrite do not support file sharing. Perhaps you should try using FileOpen function. 
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-27 09:40:46 IP:61.219.xxx.xxx 未訂閱
引言: var INPUTFILE:file; begin AssignFile(INPUTFILE,'test.exe'); Reset(INPUTFILE,1); closefile(INPUTFILE); end; ======================================== 如果test.exe非唯讀屬性則一切正常,否則出現錯誤 但test.exe如果是在cdrom,勢必唯讀,請問有解嗎? 謝謝!
1. filetype改成textfile不要untyped 如下就可以讀readonly var INPUTFILE:textfile; 2. 若以textfile型態無法滿足需求, 那就用 FileStream讀
var fs:TFileStream;
begin
  fs:=TFileStream.create('test.exe',fmOpenRead);
  try
    fs.read(buf, count);
  ...
  finally
    fs.free;
  end;
end;
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-27 09:46:31 IP:61.218.xxx.xxx 未訂閱
感謝william的回應. 小弟的目的在於讀取二進位檔的表頭資訊,因此恐怕無法使用FileOpen來完成,如果想由程式變更檔案屬性,在CDROM也不可行。 按理說AssignFile和Reset只是讀檔,沒道理會失敗,請前輩們指點。 謝謝!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-27 09:55:41 IP:147.8.xxx.xxx 未訂閱
Quoted from the Delphi help:    Warning: The default value of FileMode is 2 (Read/Write access). If this is not changed to a read-only file mode before calling Reset, attempts to open read-only files will fail. So you should set the proper FileMode (a global variable in Delphi) before calling reset.
johnnychang
一般會員


發表:24
回覆:26
積分:16
註冊:2002-09-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-27 10:17:48 IP:61.59.xxx.xxx 未訂閱
試試這樣子:    var INPUTFILE:file; begin AssignFile(INPUTFILE,'test.exe'); FileMode := 0; {Set file access to read only } Reset(INPUTFILE,1); closefile(INPUTFILE); end; 發表人 - johnnychang 於 2003/02/27 10:19:36
pcernet
初階會員


發表:69
回覆:113
積分:41
註冊:2002-11-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-27 11:47:06 IP:61.218.xxx.xxx 未訂閱
thank johnnychang and thank everybody, it's OK!
系統時間:2024-04-19 17:34:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!