全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2891
推到 Plurk!
推到 Facebook!

請教FileGetAttr函數和FileSetAttr函數

答題得分者是:hagar
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-19 01:00:52 IP:63.84.xxx.xxx 未訂閱
請教各位前輩.    FileGetAttr函數的宣告傳回值是Integer形態, 請問faReadOnly; faHidden...這些值相對應的Integer值是多少呢?    FileSetAttr函數的宣告傳回值也是Integer形態, 請問如下語句中, 0是代表什么? 還有其它的數值嗎? 若有的話, 又各代表什么?
if FileSetAttr('D:\訂單.xls', faReadOnly)=0 then
  ShowMessage('檔案屬性修改成功')
else
  ShowMessage('檔案屬性修改失敗');
如果想一次設定多個檔案屬性, 該如何寫? 小弟在Run有關以上兩個函數的Code時, 出現Symbol 'FileSetAttr' is specific to Platform的信息, 請問是何意思? 多個問題, 感謝賜教! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-19 08:12:11 IP:202.39.xxx.xxx 未訂閱
1.定義在 SysUtils.pas 中
{ File attribute constants }      faReadOnly  = $00000001;
  faHidden    = $00000002;
  faSysFile   = $00000004;
  faVolumeID  = $00000008;
  faDirectory = $00000010;
  faArchive   = $00000020;
  faAnyFile   = $0000003F;
2.看一下 help 中關於 FileSetAttr 的這一句 FileSetAttr returns zero if the function was successful. Otherwise the return value is a Windows error code. 可用 ShowMessage(SysErrorMessage(GetLastError)) 的方式取得錯誤訊息 ex:
var iReturn: ineger;
begin
  iReturn := FileSetAttr('D:\訂單.xls', faReadOnly);
  if iReturn <> 0 then
    ShowMessage(SysErrorMessage(iReturn));
end;
3.一次只能設定一個 file 吧. 4.只是警告它只適用在 windows 系統, 不適用在 linux 系統 您可以用滑鼠在錯誤訊息上點一下, 然後按 F1 取得詳細說明. --- 歡迎光臨 KTop 研究院 發表人 -
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-19 09:02:47 IP:63.84.xxx.xxx 未訂閱
謝謝hagar版主的解答﹒    至于第一個問題﹐小弟下如下Code:
if OpenDialog1.Execute then
ShowMessage(IntToStr(FileGetAttr(OpenDialog1.FileName);
則Show出為32的回傳值﹐請問這里的函義﹖ 第二個問題中的0﹐版主的意思是說這是一個錯誤的發生率嗎﹖只有在等于0的時候﹐屬性轉換才沒有錯誤﹒ 感謝賜教﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-19 09:09:49 IP:202.39.xxx.xxx 未訂閱
引言: 謝謝hagar版主的解答﹒ 至于第一個問題﹐小弟下如下Code:
if OpenDialog1.Execute then
ShowMessage(IntToStr(FileGetAttr(OpenDialog1.FileName);
則Show出為32的回傳值﹐請問這里的函義﹖
涵義小弟是不太清楚, 改成如下:
if OpenDialog1.Execute then
  if FileGetAttr(OpenDialog1.FileName) <> 0 then
    ShowMessage(SysErrorMessage(GetLastError));
引言: 第二個問題中的0﹐版主的意思是說這是一個錯誤的發生率嗎﹖只有在等于0的時候﹐屬性轉換才沒有錯誤﹒
回傳值為 0 表示函式執行成功, 看這句: FileSetAttr returns zero if the function was successful --- 歡迎光臨 KTop 研究院
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-19 09:27:01 IP:63.84.xxx.xxx 未訂閱
謝謝hager版主﹒    小弟測如版主所說的Code﹐出現'操作成功完成'的ShowMessage的內容﹒如果小弟想取得指定檔案的屬性值﹐該如何寫﹖ 感謝﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-19 09:41:49 IP:202.39.xxx.xxx 未訂閱
ex:
var i: integer;
begin
  i := FileGetAttr('C:\xx.txt');
  if i and faReadOnly > 0 then
    ShowMessage('是唯讀檔');
  if i and faHidden > 0 then
    ShowMessage('是隱藏檔');
  // ... 類推
end;
--- 歡迎光臨 KTop 研究院
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-19 10:34:01 IP:63.84.xxx.xxx 未訂閱
感謝hagar版主大人﹒    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-05-09 4:53:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!