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

請問FindFirst的Path?

 
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-12 20:11:14 IP:211.22.xxx.xxx 未訂閱
FindFirst的Path有辦法訂一個以上的副檔名嗎?? 例如我想一次讀進所以.jpg 和 .gif的檔到一個array裡。 還是我得分兩次讀呢? 謝謝!!
ccchen
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-13 13:26:46 IP:163.29.xxx.xxx 未訂閱
引言: FindFirst的Path有辦法訂一個以上的副檔名嗎?? 例如我想一次讀進所以.jpg 和 .gif的檔到一個array裡。 還是我得分兩次讀呢? 謝謝!!
自行過濾吧 procedure TForm1.Button1Click(Sender: TObject); var sr: TSearchRec; fext:string; begin if FindFirst('*.*', faArchive, sr) = 0 then begin repeat fext:=ExtractFileExt(sr.name); if (comparetext(fext,'.jpg')=0) or (comparetext(fext,'.gif')=0) then Listbox1.Items.Add(sr.name); until FindNext(sr) <> 0; FindClose(sr); end; end;
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-13 15:14:26 IP:210.201.xxx.xxx 未訂閱
引言: 自行過濾吧 procedure TForm1.Button1Click(Sender: TObject); var sr: TSearchRec; fext:string; begin if FindFirst('*.*', faArchive, sr) = 0 then begin repeat fext:=ExtractFileExt(sr.name); if (comparetext(fext,'.jpg')=0) or (comparetext(fext,'.gif')=0) then Listbox1.Items.Add(sr.name); until FindNext(sr) <> 0; FindClose(sr); end; end;
謝謝ccchen兄 我還有個問題 FindFirst只會掃Current Directory 如果找到的檔是一個目錄的話 他不會找到下一層去 如要達到找全部(包含子目錄下的檔案)的檔案時 又該如何達成此功能呢?
anderslee
初階會員


發表:2
回覆:32
積分:26
註冊:2002-06-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-13 16:38:14 IP:202.64.xxx.xxx 未訂閱
< 只要寫一個 procedure 去處理一個 Directory 在找到子目錄時用 Recursive 方式呼叫自己 不過記著要把回傳的資料加入已知的檔名就行 e.g. (psuedo code) Procedure GetFilesInOneDirectory(StartDir, FileSpec:String; ListOfFiles:TStringList); Var SubList : TStringList; Begin FindFirst (xxx,xxx,xx); // 自行找出在本目錄的檔 Repeat If FileFound 是一個檔名 AddToOurOwnList // add to mainlist else If FileFound 是個子目錄 Begin GetFilesInOneDirectory(子目錄,xx,SubList) Add SubList to mainlist; // 把子目錄檔加入 End FindNExt(xx); Until Done; 回傳 mainlist End;
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-13 21:47:47 IP:211.22.xxx.xxx 未訂閱
引言: 只要寫一個 procedure 去處理一個 Directory 在找到子目錄時用 Recursive 方式呼叫自己 不過記著要把回傳的資料加入已知的檔名就行 e.g. (psuedo code) Procedure GetFilesInOneDirectory(StartDir, FileSpec:String; ListOfFiles:TStringList); Var SubList : TStringList; Begin FindFirst (xxx,xxx,xx); // 自行找出在本目錄的檔 Repeat If FileFound 是一個檔名 AddToOurOwnList // add to mainlist else If FileFound 是個子目錄 Begin GetFilesInOneDirectory(子目錄,xx,SubList) Add SubList to mainlist; // 把子目錄檔加入 End FindNExt(xx); Until Done; 回傳 mainlist End;
看得不是很懂 xx的部份是指什麼呢? 我大概的寫了一下 但發現這個repeat會跑不完 會產生e:\lear\.\.\.\.\.\.\.一直下去的樣子 程式如下: var Form1: TForm1; MainList: TStringList; procedure TForm1.GetFilesInOneDirectory(StartDir: String); Var sr: TSearchRec; begin if(FindFirst(StartDir '\*.*' , faAnyFile, sr) = 0)then begin Repeat if((sr.Attr and faArchive)=faArchive)then begin MainList.Add(sr.Name); end else if((sr.Attr and faDirectory)=faDirectory)then begin GetFilesInOneDirectory(StartDir '\' sr.Name); end; Until(FindNext(sr) <> 0); FindClose(sr); end; end; procedure TForm1.Button1Click(Sender: TObject); begin GetFilesInOneDirectory('e:\lear'); end; ps.為什麼我的程式碼都不會縮格哩????
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-06-14 14:04:36 IP:211.22.xxx.xxx 未訂閱
我試了一下 這樣好像可以 不知還有其他好方法嗎??? procedure TForm1.Button1Click(Sender: TObject); var i: integer; procedure FindAllName(aPath: string); var sr: TSearchRec; begin if(FindFirst(aPath '\*.*', faAnyFile, sr) = 0)then begin Repeat if((sr.Attr and faArchive)=faArchive)then begin memo1.lines.add(aPath '\' sr.Name); end else if((sr.Attr and faDirectory)=faDirectory)then begin if((sr.Name <> '.')and(sr.Name <> '..'))then begin aPath:= aPath '\' sr.Name; FindAllName(aPath); aPath:= ExtractFileDir(aPath); end; end; Until(FindNext(sr) <> 0); FindClose(sr); end; end; begin memo1.clear; FindAllName('e:\lear'); end;
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-06-14 21:41:04 IP:192.168.xxx.xxx 未訂閱
引言: ps.為什麼我的程式碼都不會縮格哩????
請加上 〔Code〕 程式碼 〔/code〕 就會縮格了 請見: 在本站發表文章中的程式碼如何達到縮排效果? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
系統時間:2024-04-26 6:29:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!