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

請問如何寫一個找出目錄下相同的檔名的檔案程式

答題得分者是:hagar
balance58
一般會員


發表:8
回覆:1
積分:1
註冊:2003-02-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-27 21:12:24 IP:61.59.xxx.xxx 未訂閱
請問如何可寫一個指定目錄下的所有子目錄中相同檔名的檔案,並可記錄相關的路俓位置,謝謝。
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-27 22:25:39 IP:202.39.xxx.xxx 未訂閱
利用這篇 http://delphi.ktop.com.tw/topic.php?topic_id=50065 japhenchen 大大的範例:
function SearchFile(Dir, fnx: String; inList: TStrings): boolean;
var mySR : TSearchRec ;
    FileList, DirList: TStringList;
    i : integer ;
begin
   result := false ;
   DirList := TStringList.Create;
   if findfirst(IncludeTrailingBackSlash(DIR)   '*.*', faAnyFile, mySR) = 0 then
   begin
      if (MySR.Attr and faAnyFile <= $0000003F) and (MySR.name <> '..')
        and (MySR.Name <> '.') THEN
          if ((MySR.Attr and $00000010)=$00000010) then
            DirList.add(IncludeTrailingBackSlash(Dir) MySR.name);
      while Findnext(mySR) = 0 do
      begin
         if (MySR.Attr and $0000003F <= $0000003F) and (MySR.name <> '..')
           and (MySR.Name<>'.') THEN
             if (MySR.Attr and faDirectory = $00000010) then
               DirList.add(IncludeTrailingBackSlash(Dir) MySR.name);
         if (MySR.Attr and faDirectory <> $00000010)
           AND (MySR.Attr and faHidden <> $00000002) then
              if (pos(fnx, IncludeTrailingBackSlash(dir)   MySR.Name)>0) then
                 inList.add(IncludeTrailingBackSlash(Dir) MySR.name);
      end ;
   end ;
   if (DirList.Count > 0) then
      for i := 1 to DirList.count do
      begin
         SearchFile(DirList.Strings[i-1], fnx, inList);
      end;       FindClose(mySR);
   result := true ;
end ;    procedure TForm1.Button3Click(Sender: TObject);
begin
  // 尋找 C:\ 下所有檔名為 Project1.exe 的檔案, 有分大小寫)
  Searchfile('C:\', 'Project1.exe', ListBox1.Items);
  ShowMessage('搜尋完成!');
end;
-- 向 KTop 的弟兄們致敬!
balance58
一般會員


發表:8
回覆:1
積分:1
註冊:2003-02-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-05 19:41:45 IP:210.64.xxx.xxx 未訂閱
再請問要如何才能顯示目前尋的進度,不要讓使用者以為程式無反應了,其實 程式尚在執行中,謝謝。
hagar
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-06 08:08:23 IP:202.39.xxx.xxx 未訂閱
function SearchFile(Dir, fnx: String; inList: TStrings): boolean;
var mySR : TSearchRec ;
    FileList, DirList: TStringList;
    i : integer ;
begin
   result := false ;
   DirList := TStringList.Create;
   if findfirst(IncludeTrailingBackSlash(DIR)   '*.*', faAnyFile, mySR) = 0 then
   begin
     StatusBar1.Panels[0].Text := mySR.Name; // 用個 TStatusBar, 加上這兩行試試
     StatusBar1.Refresh;
     // ...
end ;
-- 向 KTop 的弟兄們致敬!
系統時間:2024-06-29 11:13:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!