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

如何得到資料夾裡所有的檔案名稱

答題得分者是:RedSnow
Jiahong1012
一般會員


發表:7
回覆:17
積分:9
註冊:2004-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-13 11:48:22 IP:220.141.xxx.xxx 未訂閱
各位高手們, 我去開啟一個資料夾,但要如何得到這個資料夾的所有檔案名稱呢?
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-13 11:58:26 IP:140.127.xxx.xxx 未訂閱
您好! 可以參考一下: http://delphi.ktop.com.tw/topic.php?topic_id=73326
limeca
中階會員


發表:2
回覆:74
積分:60
註冊:2005-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-13 12:04:22 IP:202.145.xxx.xxx 未訂閱
你好! 可以參考【問題】如何取目錄下檔案 http://delphi.ktop.com.tw/topic.php?topic_id=61317
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-13 13:47:40 IP:61.230.xxx.xxx 未訂閱
Jiahong1012 您好:    直接給您一個範例如下:
#include   // for chdir()
#include   // for SelectDirectory()
#include   // for FindFirst() & FindNext()    void __fastcall DirFiles(AnsiString RootDir, bool chkSubDir, bool incPath)
{
    chdir(RootDir.c_str());  // 切換到指定目錄去        TSearchRec Sr;  // 設 Sr 為存放檔案資訊的結構變數
    AnsiString FileName;  // 設定檔案名稱之用的暫存變數        int done = FindFirst("*.*", faDirectory | faAnyFile, Sr);
    while (done == 0) {
        if (!(Sr.Attr & faDirectory)) {  // 如果是檔案
            if (incPath) {  // 如果檔名要包含路徑資料在內
                char curdir[MAXPATH 1];
                GetCurrentDirectory(MAXPATH, curdir);  // 取得現行目錄名稱
                FileName = AnsiString(curdir)   "\\"   Sr.Name;  // 設定含路徑的檔名
            } else {
                FileName = Sr.Name;  // 設定不含路徑的檔名
            }                Form1->Memo1->Lines->Add(FileName);  // 此處設置您自己要處理的動作
        } else if(chkSubDir) {  // 如果要檢查次目錄內的檔案
            if (Sr.Name != "." && Sr.Name != "..") {  // 如果不是相對目錄代碼的話
                DirFiles(Sr.Name.c_str(), true, incPath); // 如果是目錄的話就遞迴處理
                chdir(String("..").c_str());  // 切換回前一層目錄
            }
        }            done = FindNext(Sr);  // 找目錄中的下一個檔案
    }        FindClose(Sr);
}    void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString Dir;
    if (SelectDirectory("Select Directory", "", Dir)) {  // 選擇要處理的目錄
        bool CheckSubDirectory = false;  // 取得檔案名稱時是否要檢查次目錄內的檔案?
        bool NameIncludePath = false;  // 取得檔案名稱時是否要包含路徑名稱?
        DirFiles(Dir, CheckSubDirectory, NameIncludePath);
    }
}
我將函式寫成稍具彈性些,因此 DirFiles() 函式需要設定三個參數,第一個參數就是要處理的目錄名稱,第二個參數設定是否要檢查次目錄內的檔案?第三個參數設定取得檔案名稱時,是否要包含路徑資料?您試試看吧。 7 天天敲鍵盤 v 時時按滑鼠 8 發表人 - RedSnow 於 2005/07/13 13:59:44
Jiahong1012
一般會員


發表:7
回覆:17
積分:9
註冊:2004-11-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-13 14:18:04 IP:220.141.xxx.xxx 未訂閱
Cashyy /Limeca / Redsonw, Thanks for your great support! 我有參考這些文章都能夠 works, but 分數只能夠給一個人,Sorry. RedSnow, 謝謝你 post 這些 code.
系統時間:2024-11-22 2:30:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!