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

語法意義

尚未結案
AutoWeb
一般會員


發表:3
回覆:5
積分:1
註冊:2003-03-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-04 09:39:26 IP:211.75.xxx.xxx 未訂閱
procedure TMainForm.btnReadClick(Sender: TObject);
var
   AttrByte        :Integer;
begin
   AttrByte:=FileGetAttr(edFileName.Text);       if AttrByte AND faReadOnly=faReadOnly then
      chkReadOnly.Checked:=True
   else chkReadOnly.Checked:=False;
end;
我想請教的是:if AttrByte AND faReadOnly=faReadOnly then,這段看來很怪異, faReadOnly當然會等於faReadOnly啊!然後在前頭又加了【AttrByte AND】, 我搞不懂這段的意義,麻煩大大可以解釋給我知道嗎? 謝謝! 發表人 - AutoWeb 於 2004/11/04 09:41:42
nancy
一般會員


發表:8
回覆:19
積分:10
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-04 09:54:39 IP:61.222.xxx.xxx 未訂閱
這段程式應該要這樣看: if (AttrByte AND faReadOnly) = faReadOnly "AND"的優先權是高於"="的
hagar
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-04 10:16:03 IP:202.39.xxx.xxx 未訂閱
在 SysUtils 單元中的定義 faReadOnly = $00000001; 再來看 bit 運算元 And 的用法是兩個 bit 皆為 1 則結果為 1 兩個 bit 其中有一個 bit 為 0 則結果為 0 因此不管 AttrByte 的 bit1 ~ bit7 為 0 或 1 與 faReadOnly 做 And 的運算結果皆為 0 那來看 AttrByte 的 bit0 若 AttrByte 的 bit0 為 0 的話 與 faReadOnly 做 And 運算那結果會是 0(faReadOnly 的 bit0 值為 1) 即結果是 $00000000 也就不會等於 faReadOnly(faReadOnly 是 $00000001) 若 AttrByte 的 bit0 值為 1 的話 與 faReadOnly 做運算的結果為 $0000001 其值等於 faReadOnly 的值 其實最主要是判斷 AttrByte 的 bit0 的值是否為 1 這也就是程式這麼寫的意義
AutoWeb
一般會員


發表:3
回覆:5
積分:1
註冊:2003-03-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-04 12:17:48 IP:211.75.xxx.xxx 未訂閱
也就是說:AttrByte先與faReadOnly做AND運算 再把結果拿來看看是否等於faReadOnly囉??? 那,為啥米要做一次AND運算呢?? 直接 if AttrByte = faReadOnly then 不就可以了嗎??
hagar
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-04 13:21:09 IP:202.39.xxx.xxx 未訂閱
引言: 也就是說:AttrByte先與faReadOnly做AND運算 再把結果拿來看看是否等於faReadOnly囉??? 那,為啥米要做一次AND運算呢?? 直接 if AttrByte = faReadOnly then 不就可以了嗎??
因為 AttrByte := FileGetAttr(edFileName.Text); 取得檔案屬性後 不一定只有 ReadOnly 的屬性啊, 它也許還有隱藏、系統檔等屬性 此時 AttrByte 就不等於 faReadOnly 了.
AutoWeb
一般會員


發表:3
回覆:5
積分:1
註冊:2003-03-01

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