Kiều Mạnh
I don't program, I beat code into submission!!!
- Tham gia
- 9/6/12
- Bài viết
- 5,538
- Được thích
- 4,132
- Giới tính
- Nam
1/ Xuất phát từ những thành viên đã hỏi trên GPE này 1 số hàm File và Folder có liên Quan tới tên File Or Folder là tiếng việt có dấu
2/ Thông thường thì ta sử dụng Windows thì thấy đa số là sử dụng Scripting.FileSystemObject của Ms
3/ một số khác sử dụng cmd để tìm kiếm file trong Folder duyệt folder đệ quy chạy khá nhanh
4/ vân vân và mây bay .... thì lâu nay Tôi rảnh có viết 1 class + API trên Delphi để sử dụng và ko lệ thuộc vào bên thứ 3 và hổ trợ Unicode path
5/ Xem list Hàm COM như Sau ... để sử dụng COM DLL thì buộc phải đăng ký DLL với Windows mới sử dụng được

6/ rất nhiều hàm trong đó 90% là hàm do Delphi viết còn Mạnh chỉ khai báo sử dụng nó thông qua COM DLL theo hình thức A = B
7/ Mạnh có viết 1 Hàm lấy danh sách File trong Folder với tùy chọn lọc File và duyệt Folder đệ quy ... tốc độ khá nhanh úp cho ai cần sử dụng nó
Hàm trên Viết thuần trên Delphi và ko lệ thuộc vào các thư viện của bên thứ 3 VD như cmd Or fso của Ms
8/ Hãy thử test code ... Mạnh Copy 1 hàm cmd của Anh ndu trên GPE này và 1 hàm API do Mạnh viết các bạn thử chọn C:\Windows xong chờ 1 chút có kết quả của 2 Hàm tại Cells A1
Code khai báo API như sau
2/ Thông thường thì ta sử dụng Windows thì thấy đa số là sử dụng Scripting.FileSystemObject của Ms
3/ một số khác sử dụng cmd để tìm kiếm file trong Folder duyệt folder đệ quy chạy khá nhanh
4/ vân vân và mây bay .... thì lâu nay Tôi rảnh có viết 1 class + API trên Delphi để sử dụng và ko lệ thuộc vào bên thứ 3 và hổ trợ Unicode path
5/ Xem list Hàm COM như Sau ... để sử dụng COM DLL thì buộc phải đăng ký DLL với Windows mới sử dụng được

6/ rất nhiều hàm trong đó 90% là hàm do Delphi viết còn Mạnh chỉ khai báo sử dụng nó thông qua COM DLL theo hình thức A = B
7/ Mạnh có viết 1 Hàm lấy danh sách File trong Folder với tùy chọn lọc File và duyệt Folder đệ quy ... tốc độ khá nhanh úp cho ai cần sử dụng nó
Hàm trên Viết thuần trên Delphi và ko lệ thuộc vào các thư viện của bên thứ 3 VD như cmd Or fso của Ms
8/ Hãy thử test code ... Mạnh Copy 1 hàm cmd của Anh ndu trên GPE này và 1 hàm API do Mạnh viết các bạn thử chọn C:\Windows xong chờ 1 chút có kết quả của 2 Hàm tại Cells A1
Code khai báo API như sau
Mã:
Rem ==========
#If Win64 Then
Declare PtrSafe Function SelectFolderDialogA Lib "MyLibrary64.dll" () As Variant
Declare PtrSafe Function GetFilesA Lib "MyLibrary64.dll" _
(ByVal YourFolder As Variant, ByVal Extension As Variant, ByVal InSub As Boolean) As Variant
#Else
Declare PtrSafe Function GetFilesA Lib "MyLibrary64.dll" _
(ByVal YourFolder As Variant, ByVal Extension As Variant, ByVal InSub As Boolean) As Variant
#End If
Rem ----------------------------
Dim FolderPath As Variant
Dim chk As Boolean, aPath As String
Rem ----------------------------
Rem Tham so Ham GetFilesA
Rem 1/ FolderPath = duong dan Folder can tim kiem File
Rem 2/ Extension = Tuy chon loc theo phan mo rong cua File
Rem 3 InSub = True duyet de quy Folder
Rem 4 InSub = False khong duyet de quy Folder
Rem ----------------------------
Sub Main_GetFiles()
Dim Res(1 To 1048575, 1 To 1), k As Long
Dim ListFiles() As String, ObjFile As Variant
Rem FolderPath = "D:\Database_Server"
Rem FolderPath = "D:\"
FolderPath = SelectFolderDialogA()
Dim t@: t = msTimer
''ListFiles = GetFilesA(FolderPath, "*.xls*", True) ''Chi dinh loc File
ListFiles = GetFilesA(FolderPath, "", True) ''Lay het
''ListFiles = GetFilesA(FolderPath, "*.accdb*", true)
''ActiveSheet.ListBox1.Clear
For Each ObjFile In ListFiles
'Debug.Print ObjFile
'ActiveSheet.ListBox1.AddItem ObjFile
k = k + 1
Res(k, 1) = ObjFile
Next
ActiveSheet.UsedRange.ClearContents
ActiveSheet.[A3].Resize(k) = Res
Rem Debug.Print "Tong so File la " & vbTab & k
Rem Range("A1").Value = "Tong so File la " & vbTab & k
Range("A1").Value = msTimer - t
End Sub