 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 1 樓
|
發表於: 星期六 七月 03, 2004 1:30 am 文章主題: 分享:列出某目錄下所有檔案名稱 |
|
|
分享:列出某目錄下所有檔案名稱
需使用到ADIR()
代碼: |
LOCAL lScanDir,sFiles,ListFiles[1],cFile,cNewFile,i
LOCAL lcCurDir
lc_CurDir="D:\BITMAPS\DESKTOP\"
sFiles = ADIR(ListFiles,lc_CurDir+"*.JPG","AHRSD")
IF sFiles > 0
FOR i=1 TO ALEN(ListFiles,1)
IF NOT INLIST(ListFiles(i,1),".","..") &&不處理.,..
IF NOT "D" $ ListFiles(i,5) &&不處理目錄
cFile = lc_CurDir + ListFiles(i,1)
? cFile
ENDIF
ENDIF
ENDFOR
ENDIF
*!*ListFiles說明
*!* Column Array contents Data type
*!* 1 File names Character
*!* 2 File sizes Numeric
*!* 3 Dates last modified Date
*!* 4 Times last modified Character
*!* 5 File attributes Character
*!* Letter Attribute
*!* A Archive – Read/Write
*!* H Hidden
*!* R Read-only
*!* S System
*!* D Directory |
_________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
愛作夢 |
|
回頂端 |
|
 |
fash
註冊時間: 2004-07-12 文章: 5
第 2 樓
|
發表於: 星期三 九月 01, 2004 9:08 am 文章主題: |
|
|
對不起.....我想請問一下
上列的程式裡是否有限制最多只能列出幾個目錄?
因為我參照上面的程式寫出來執行的結果是只能讀取二十個檔...
由於我是個新手..
=" =....東看西看....看不太出來是哪裡有誤?
是程式有問題還是物件方面的設定有miss?
我執行的目錄裡有29個txt,但執行到21時就停在紅色程式了
對了....我執行到紅色那行時...跑出來的錯誤訊息為註標超出定義範圍
我不太瞭它的意思...因為想請教一下高手們..
以下是我參照寫出來...
THISFORM.INLIST.ROWSOURCETYPE = 5
THISFORM.INLIST.ROWSOURCE = 'FileList'
THISFORM.INLIST.REQUERY
THISFORM.cmd_ClrSource.ENABLED = .T.
OPENDIR=GETDIR("","請設定要作業之檔案目錄")
SET DEFAULT TO &OPENDIR
sFiles = ADIR(ListFiles,"*.TXT","1")
IF sFiles > 0
FOR i=1 TO ALEN(ListFiles,1)
IF NOT INLIST(ListFiles(i,1),".","..") &&不處理.,..
IF NOT "D" $ ListFiles(i,5) &&不處理目錄
cFile = ListFiles(i,1)
FileList[CurCount] = cFile
CurCount = CurCount +1
ENDIF
ENDIF
ENDFOR
ENDIF |
|
回頂端 |
|
 |
小桑•無痕

註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 3 樓
|
發表於: 星期三 九月 01, 2004 10:19 am 文章主題: |
|
|
fash 寫到: | 對不起.....我想請問一下
上列的程式裡是否有限制最多只能列出幾個目錄?
因為我參照上面的程式寫出來執行的結果是只能讀取二十個檔...
由於我是個新手..
=" =....東看西看....看不太出來是哪裡有誤?
是程式有問題還是物件方面的設定有miss?
我執行的目錄裡有29個txt,但執行到21時就停在紅色程式了
對了....我執行到紅色那行時...跑出來的錯誤訊息為註標超出定義範圍
我不太瞭它的意思...因為想請教一下高手們..
以下是我參照寫出來...
THISFORM.INLIST.ROWSOURCETYPE = 5
THISFORM.INLIST.ROWSOURCE = 'FileList'
THISFORM.INLIST.REQUERY
THISFORM.cmd_ClrSource.ENABLED = .T.
OPENDIR=GETDIR("","請設定要作業之檔案目錄")
SET DEFAULT TO &OPENDIR
sFiles = ADIR(ListFiles,"*.TXT","1")
IF sFiles > 0
FOR i=1 TO ALEN(ListFiles,1)
IF NOT INLIST(ListFiles(i,1),".","..") &&不處理.,..
IF NOT "D" $ ListFiles(i,5) &&不處理目錄
cFile = ListFiles(i,1)
FileList[CurCount] = cFile
CurCount = CurCount +1
ENDIF
ENDIF
ENDFOR
ENDIF |
這個程式好像不完整.....
FileList[CurCount] <<< 這個陣列....您有定義嗎....陣列大小?(我猜您定義20...所以執行到21時就會超出定義範圍)....
CurCount <<< 變數的初始值沒列出來(CurCount = 0)
可以的話....您可以把完整的東西POST上來(或是這部份的SAMPLE)... _________________ 用力 Try 一下...可以發現很多好玩的事.... |
|
回頂端 |
|
 |
小桑•無痕

註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 4 樓
|
發表於: 星期三 九月 01, 2004 10:36 am 文章主題: Re: 分享:列出某目錄下所有檔案名稱 |
|
|
goto-dream 寫到: | 分享:列出某目錄下所有檔案名稱
需使用到ADIR()
代碼: |
LOCAL lScanDir,sFiles,ListFiles[1],cFile,cNewFile,i
LOCAL lcCurDir
|
|
Dear. goto-dream....
lScanDir <<< 這個變數讓我覺得...這個程式是不是有自動搜尋子目錄的版本....
--- 我的寫法....大家也參考看看.... -----------------------------------------------------------------------------
CLEAR
CLEAR ALL
cPath = FULLPATH(GETDIR(CURDIR(),"請選擇工作目錄...."))
sFiles = ADIR(ListFiles,cPath + "*.*","AHRSD")
IF sFiles > 0
FOR I = 1 TO sFiles
? cPath + ListFiles(I,1),IIF("D" $ ListFiles(I,5)," <DIR>","")
NEXT I
ENDIF
---------------------------------------------------------------
CLEAR ALL
CLEAR
LOCAL cPath,sFiles,ListFiles[1],cFile,I
cPath = FULLPATH(GETDIR(CURDIR(),"請選擇工作目錄...."))
sFiles = ADIR(ListFiles,cPath + "*.*","AHRSD")
IF sFiles > 0
FOR I = 1 TO sFiles
IF !("D" $ ListFiles(I,5))
? cPath + ListFiles(I,1)
ENDIF
NEXT I
ENDIF _________________ 用力 Try 一下...可以發現很多好玩的事.... |
|
回頂端 |
|
 |
fash
註冊時間: 2004-07-12 文章: 5
第 5 樓
|
發表於: 星期三 九月 01, 2004 12:26 pm 文章主題: |
|
|
丫......果真是我的FileList[CurCount]只定義20..
^^"....歹勢...我沒注意到這個小細節..
謝謝小桑大大幫我找出癥結..
(唉....修改別人的程式果真要面面俱到) |
|
回頂端 |
|
 |
小桑•無痕

註冊時間: 2003-07-08 文章: 304 來自: Tainan, Taiwan
第 6 樓
|
發表於: 星期三 九月 01, 2004 3:18 pm 文章主題: |
|
|
fash 寫到: | 丫......果真是我的FileList[CurCount]只定義20..
^^"....歹勢...我沒注意到這個小細節..
謝謝小桑大大幫我找出癥結..
(唉....修改別人的程式果真要面面俱到) |
我比較習慣動態產生 ARRAY 的大小....
(這段程式我沒測試過...您參考看看...)
--------------------------------------------
cPath = FULLPATH(GETDIR(CURDIR(),"請選擇工作目錄....")) && 注意...當 GETDIR() 按取消時...GETDIR() 會傳回""...加上 FULLPATH() 後回傳回目前程式的工作目錄...
sFiles = ADIR(ListFiles,cPath + "*.*","AHRS") && 不需要目錄資訊....可以把 D 去掉("AHRSD" -> "AHRS")
IF sFiles > 0
PUBLIC ARRAY FileList[sFiles]
FOR I = 1 TO sFiles
FileList[I] = ListFiles[I,1]
NEXT I
ELSE
*!* 找不到檔案時的處理程式 (自己寫吧)
ENDIF _________________ 用力 Try 一下...可以發現很多好玩的事.... |
|
回頂端 |
|
 |
syntech
註冊時間: 2003-05-16 文章: 4249 來自: Taipei,Taiwan
第 7 樓
|
發表於: 星期三 九月 01, 2004 5:11 pm 文章主題: |
|
|
用屬性 D 可以再找出下一層的目錄,
遞迴方式處理...
我的習慣:
FILECOUNT=ADIR(FILELIST)
VFP Sample
gnDbcnumber = ADIR(gaDatabase, '*.DBC') && Create array
這樣的命名方式就滿清楚的,參考看看 _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|