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

檔案搜尋不會進入每個子目錄?!

答題得分者是:sryang
moko
一般會員


發表:31
回覆:34
積分:13
註冊:2002-09-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-21 11:56:06 IP:210.65.xxx.xxx 訂閱
請教各位先進:  以下程式碼是我在書上參考到的,我運用了之後發現  要搜尋某的磁碟機下面所有符合sfile.text內名稱的文字檔  可是磁碟機底下有的目錄它有進入搜尋,有的卻不會,導致明明有這個檔案  但我搜尋不到,請高手幫忙指點一下,感恩~~ <textarea class="delphi" rows="10" cols="60" name="code"> procedure TFORM1.GETMYFILE(SOURCEPATH: string); var SR: TSEARCHREC; D: string; begin Sourcepath := IncludeTrailingBackslash(Sourcepath); if FINDFIRST(sourcepath '\*.*', faanyfile, sr) = 0 then begin repeat if (sr.name <> '.') and (sr.name <> '..') then begin if sr.attr <> faDirectory then begin MEMO1.LINES.ADD(sourcepath sr.name); if UpperCase(SR.NAME) = sfile.Text then begin Memo1.Lines.Add(sourcepath sr.name); D := 'C:\MARK\DATA\' sfile.text; CopyFile(PCHAR(sourcepath sr.name), PCHAR(D), FALSE); end; end else begin getmyfile(sourcepath sr.name); end; end; until findnext(sr) <> 0; end; findclose(sr); end; </textarea>
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-08-21 15:03:50 IP:59.125.xxx.xxx 訂閱
關鍵在於 if sr.attr <> faDirectory then 這一行

TSearchRec.Attr 不能用 = 來比對。因為各種檔案或目錄屬性是會相加的
目錄 faDirectory = 16 (00010000),隱藏 faHidden = 2 (00000010)
所以「
隱藏目錄」= 18 (00010010)

應該改用
if (sr.attr and faDirectory) <> faDirectory then 來比較
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
moko
一般會員


發表:31
回覆:34
積分:13
註冊:2002-09-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-08-21 16:37:34 IP:210.65.xxx.xxx 訂閱
呼 今天在搜尋相關問題的時候有看到這樣的說明哩
但沒看懂,現在已經了解了!
謝謝sryang! 感恩!
===================引 用 sryang 文 章===================
關鍵在於 if?sr.attr?<>?faDirectory?then 這一行

TSearchRec.Attr 不能用 = 來比對。因為各種檔案或目錄屬性是會相加的
目錄 faDirectory? = 16 (00010000),隱藏 faHidden = 2 (00000010)
所以「
隱藏目錄」= 18 (00010010)

應該改用
if (sr.attr and faDirectory) <> faDirectory?then? 來比較
系統時間:2024-05-08 5:21:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!