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

如何自動搜尋程式所在,磁碟或光碟機之特定檔案(*.MP3)?

答題得分者是:Justmade
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-08 02:52:02 IP:61.225.xxx.xxx 未訂閱
如何自動搜尋程式所在,磁碟或光碟機之特定檔案(*.MP3)?        發表是最好的記憶!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-08 08:05:29 IP:211.74.xxx.xxx 未訂閱
DriveComboBox DirectoryListBox FileListBox就可以了.. 1.DirectoryListBox的FileList設為FileListBox. 2.FileListBox的Mask設為*.mp3. TRY TRY SEE
引言: 如何自動搜尋程式所在,磁碟或光碟機之特定檔案(*.MP3)?
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-08 08:34:28 IP:218.16.xxx.xxx 未訂閱
何謂自動?    基楚搜尋方式:
procedure TForm1.Button1Click(Sender: TObject);
var
  sr: TSearchRec;
begin
  StringGrid1.RowCount := 1;
  if FindFirst(Path   '*.mp3', 0, sr) = 0 then
  begin
    repeat
      Memo1.Lines.Add(sr.Name);
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
Path 的找法 : 程式所在 : ExtractFileDir(application.ExeName) 磁碟 ,光碟機 : 用 GetLogicalDriveStrings 取得 Drive List (非必要) 用 GetDriveType 取得 DriveType : 0 The drive type cannot be determined. 1 The root directory does not exist. DRIVE_REMOVABLE The drive can be removed from the drive. DRIVE_FIXED The disk cannot be removed from the drive. DRIVE_REMOTE The drive is a remote (network) drive. DRIVE_CDROM The drive is a CD-ROM drive. DRIVE_RAMDISK The drive is a RAM disk. 確定了那個 Drive 是磁碟及光碟便可以此來作Path 找檔案了 當然你也可用元件 : 用 TFileListBox Directory 輸入 Path Mask 輸入 *.MP3 從 Items 讀檔名 發表人 - Justmade 於 2003/05/08 08:38:14
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-08 10:19:31 IP:61.217.xxx.xxx 未訂閱
何謂自動搜尋?    程式啟動後,自動將程式所在之磁碟位置或光碟機位置, 搜尋特定檔案(*.MP3),包含各個資料夾一併搜尋並放置 於ListBox元件上。    發表是最好的記憶!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-08 10:54:54 IP:211.74.xxx.xxx 未訂閱
function GetFileList(var lst: TListBox; const dir: string): integer;
var
  sr: TSearchRec;
begin
  lst.Items.Clear;
  if FindFirst(dir   '*.mp3', faAnyFile, sr) = 0 then
    try
      repeat
        if (sr.Attr and faDirectory) = 0 then lst.Items.Add(sr.Name);
      until FindNext(sr) <> 0;
    finally
      FindClose(sr);
    end;
  Result := lst.Items.Count;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   GetFileList(ListBox1,'');
end;
TRY TRY SEE
引言: 何謂自動搜尋? 程式啟動後,自動將程式所在之磁碟位置或光碟機位置, 搜尋特定檔案(*.MP3),包含各個資料夾一併搜尋並放置 於ListBox元件上。
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-08 11:12:09 IP:218.16.xxx.xxx 未訂閱
搜尋包括子目錄 :
    procedure TForm1.Button1Click(Sender: TObject);
begin
  AddFiles(ExtractFileDir(application.ExeName),'*.mp3');
  AddFiles(OtherPath,'*.mp3);
end;    procedure AddFIles(path, Mask : string);
var
  sr: TSearchRec;
begin
  StringGrid1.RowCount := 1;
  if FindFirst(Path   '*.mp3',0, sr) = 0 then
  begin
    repeat
      ListBox.Items.Add(Path   sr.Name);
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
  if FindFirst(Path ,faDirectory, sr) = 0 then
  begin
    repeat
      if (sr.Attr and faDirectory) = faDirectory then
        AddFiles(Path   sr.Name,Mask); // process sub-directory
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
Other Path 可以是光盤/軟盤根目錄,可用我上面說的方法找出 修改 : 漏了 Mask 發表人 - Justmade 於 2003/05/08 11:16:08
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-08 11:46:06 IP:61.217.xxx.xxx 未訂閱
引言:
function GetFileList(var lst: TListBox; const dir: string): integer;
var
  sr: TSearchRec;
begin
  lst.Items.Clear;
  if FindFirst(dir   '*.mp3', faAnyFile, sr) = 0 then
    try
      repeat
        if (sr.Attr and faDirectory) = 0 then lst.Items.Add(sr.Name);
      until FindNext(sr) <> 0;
    finally
      FindClose(sr);
    end;
  Result := lst.Items.Count;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   GetFileList(ListBox1,'');
end;
TRY TRY SEE
引言: 何謂自動搜尋? 程式啟動後,自動將程式所在之磁碟位置或光碟機位置, 搜尋特定檔案(*.MP3),包含各個資料夾一併搜尋並放置 於ListBox元件上。
還差一步,自動搜尋各個資料夾特定檔案(*.MP3)~~995 to me < src="http://simg3.pchome.com.tw/simage/thumbnail/3628/home.kimo.com.tw£¯angelbeach2002£¯qoo£¯angel_qoo.gif">發表是最好的記憶!
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-08 11:48:54 IP:61.217.xxx.xxx 未訂閱
引言: 搜尋包括子目錄 :
    procedure TForm1.Button1Click(Sender: TObject);
begin
  AddFiles(ExtractFileDir(application.ExeName),'*.mp3');
  AddFiles(OtherPath,'*.mp3);
end;    procedure AddFIles(path, Mask : string);
var
  sr: TSearchRec;
begin
  StringGrid1.RowCount := 1; //少了這一行,就會顯示完整路徑,太神奇了!
  if FindFirst(Path   '*.mp3',0, sr) = 0 then
  begin
    repeat
      ListBox.Items.Add(Path   sr.Name);
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
  if FindFirst(Path ,faDirectory, sr) = 0 then
  begin
    repeat
      if (sr.Attr and faDirectory) = faDirectory then
        AddFiles(Path   sr.Name,Mask); // process sub-directory
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
Other Path 可以是光盤/軟盤根目錄,可用我上面說的方法找出 修改 : 漏了 Mask 發表人 - Justmade 於 2003/05/08 11:16:08
還差一步,自動搜尋各個資料夾特定檔案(*.MP3)~~995 to me < src="http://simg3.pchome.com.tw/simage/thumbnail/3628/home.kimo.com.tw£¯angelbeach2002£¯qoo£¯angel_qoo.gif">發表是最好的記憶! 發表人 - qoo1234 於 2003/05/08 11:51:35
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-08 12:14:45 IP:218.16.xxx.xxx 未訂閱
引言: StringGrid1.RowCount := 1; //少了這一行,就會顯示完整路徑,太神奇了!
????? StringGrid ??? 無端來個 StringGrid 做甚麼 ??? 顯示完整路徑是因為 ListBox.Items.Add(Path sr.Name); 因為檔案來自多個路徑,若不加上完整路徑之後要播放去那裡找??
引言: 還差一步,自動搜尋各個資料夾特定檔案(*.MP3)~~995 to me < face="Verdana, Arial, Helvetica"> 不明你說甚麼,你要一開始時自動搜尋,不會將 AddLine(...) 放在 FormShow 事件嗎? 這樣一顯示Form就已Show出了file list 了。
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-08 12:26:52 IP:61.217.xxx.xxx 未訂閱
????? StringGrid ??? 無端來個 StringGrid 做甚麼 ???    ...J sir 版大,謝謝指教!    StringGrid1.RowCount := 1;    這一行在你的程式碼中,不知有何意義? < src="http://simg3.pchome.com.tw/simage/thumbnail/3628/home.kimo.com.tw£¯angelbeach2002£¯qoo£¯angel_qoo.gif">發表是最好的記憶!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-08 12:35:30 IP:218.16.xxx.xxx 未訂閱
引言: ????? StringGrid ??? 無端來個 StringGrid 做甚麼 ??? ...J sir 版大,謝謝指教! StringGrid1.RowCount := 1; 這一行在你的程式碼中,不知有何意義? < face="Verdana, Arial, Helvetica"> 呵,我沒留意我的程式碼一直多了這行從 Help File 抄出來大修改時留下的筆誤,真是對不起了。 不過以 qoo1234 兄你的程度 不會真的不明白這是沒意義的, 看來是有意挖苦小弟罷
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-08 12:42:00 IP:61.217.xxx.xxx 未訂閱
引言:
引言: ????? StringGrid ??? 無端來個 StringGrid 做甚麼 ??? ...J sir 版大,謝謝指教! StringGrid1.RowCount := 1; 這一行在你的程式碼中,不知有何意義? < face="Verdana, Arial, Helvetica"> 呵,我沒留意我的程式碼一直多了這行從 Help File 抄出來大修改時留下的筆誤,真是對不起了。 不過以 qoo1234 兄你的程度 不會真的不明白這是沒意義的, 看來是有意挖苦小弟罷 < face="Verdana, Arial, Helvetica"> 沒有挖苦的意思,只是不懂,好奇一問~~ < src="http://simg3.pchome.com.tw/simage/thumbnail/3628/home.kimo.com.tw£¯angelbeach2002£¯qoo£¯angel_qoo.gif">發表是最好的記憶!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-08 12:48:48 IP:218.16.xxx.xxx 未訂閱
呵呵    拿 help file 的例子來改會比較快,不過容易留下點尾巴 
系統時間:2024-07-02 20:05:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!