SỐ 145
KINH NGHIỆM LẬP TRÌNH

Tìm kiếm tập tin bằng VB
CAO MINH PHƯƠNG (Phú Thọ)

Khi lập trình với VB, hẳn bạn đã gặp phải vấn đề tìm kiếm một tập tin nào đó trên đĩa. Để giải quyết vấn đề, ta thường dùng các hàm Win32 API. Tuy nhiên, khi thử dùng các hàm trong thư viện FileSystemObject (FSO) của VB, tôi thấy mọi việc trở nên thật dễ dàng.

Để thử nghiệm, bạn hãy tạo một dự án mới (Standard Exe). Trong Form1 (được tạo ra theo mặc định), bạn thêm một CommandButton, một Label đủ lớn (dùng để hiển thị tên thư mục hiện hành) và một ListBox để liệt kê kết quả.

Tiếp theo, bạn chọn Project > Reference và chọn Microsoft Scripting Runtime. Nếu chưa thấy mục chọn này, bạn phải sao chép tập tin Scrrun.dll từ đĩa cài đặt VB 6.0 (hoặc tải về từ địa chỉ www.microsoft.com/downloads) vào thư mục \Windows\System và tìm chọn (browse) tập tin Scrrun.dll ở thư mục đó.

Bạn viết đoạn mã 1 vào Form1 rồi ấn F5 để chạy thử chương trình. Bạn sẽ thấy kết quả rất tuyệt!

Đoạn mã 1
Option Explicit
Dim fso As New FileSystemObject ‘Tạo đối tượng FileSystemObject
Dim fld As Folder

Private Sub Command1_Click()
Dim nDirs As Integer, nFiles As Integer, lSize As Long
Dim sDir As String, sSrchString As String
sDir = InputBox("Nhập tên đường dẫn: ", _
"Test", "C:\") ‘mặc định là C:\
sSrchString = InputBox("Nhập tên tập tin cần tìm: ", _
"FileSystemObjects example", "Msvcrt.dll") ‘mặc định là Msvcrt.dll
MousePointer = vbHourglass
Label1.Caption = "Thư mục " & vbCrLf & UCase(sDir) & "..."
lSize = FindFile(sDir, sSrchString, nDirs, nFiles)
MousePointer = vbDefault
MsgBox “Tìm thấy “ & Str(nFiles) & " tập tin trong " & Str(nDirs) _
& “thư mục ", vbInformation
MsgBox "Tổng cộng = " & lSize & " bytes"
End Sub

Private Function FindFile(ByVal sFol As String, sFile As String, _
nDirs As Integer, nFiles As Integer) As Long
Dim tFld As Folder, tFil As File, FileName As String

Set fld = fso.GetFolder(sFol)
FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
vbHidden Or vbSystem Or vbReadOnly)
While Len(FileName) <> 0
FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, FileName))
nFiles = nFiles + 1
List1.AddItem fso.BuildPath(fld.Path, FileName) ‘Thêm vào list
FileName = Dir() 'Tìm tiếp ...
DoEvents
Wend
Label1 = " Thư mục " & vbCrLf & fld.Path & "..."
nDirs = nDirs + 1
If fld.SubFolders.Count > 0 Then
For Each tFld In fld.SubFolders
DoEvents
FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, nFiles)
Next
End If
End Function

[Đầu trang]
Trang chủ
Nội lực "Peter Pan"
Cầu nối Intel Việt Nam
Chuyện trong tuần
Cõi người ta
Bình luận thị trường
Cõi Mô-bai
Chuyên đề
Bổ ngửa
Túi càn khôn IT
Hồ lô biến
Cảm về Game
Nhật ký e-CHÍP
Bản quyền Công ty Phần mềm & Truyền thông VASC
 99 Triệu Việt Vương HN; Tel: (04) 9782235 • email: echip@vasc.com.vn
Mọi chi tiết về kinh doanh và quảng cáo xin liên hệ Phòng Quảng cáo. Tel: (04) 9782077 kd@vasc.com.vn