• Chủ Nhật, 21/12/2003 17:37 (GMT+7)

    Câu hỏi :
    Làm thế nào để đếm số tập tin trong đĩa CD. Tôi muốn viết chương trình “Windows Media Player” bằng VB, lần lượt đọc các file trong đĩa CD và chơi chúng.

    Trả lời :
     

    Để đếm số file trong 1 đĩa CD nào đó (hay trong đĩa cứng), bạn cần duyệt file từ thư mục gốc một cách đệ qui rồi đếm chúng. Bạn có thể dùng lệnh Dir() của VB để đọc thông tin của từng file hầu phục vụ việc duyệt file. Thí dụ đoạn code VB sau cho phép bạn đếm số file trong 1 ổ đĩa hay CD:

    Const QMAX = 10000

    ‘ danh sách chứa các thư mục cần duyệt

    Dim strDirQueue(0 To QMAX) As String

    Dim iHead As Integer

    Dim iTail As Integer

    Dim filecount As Long

    ‘ Thủ tục đếm file từ ổ đĩa E:

    Private Sub cmdStart_Click()

        strDirQueue(0) = “e:\”

        filecount = 0

        iHead = 0

        iTail = 1

        While iHead <> iTail ‘Lặp đếm file của từng thư mục

            Call DuyetDemFileTrongThuMuc

            iHead = iHead + 1

            If (iHead > QMAX) Then iHead = 0

        Wend

        MsgBox (“Số file đếm được là : “ + filecount)

    End Sub

     

    Private Sub DuyetDemFileTrongThuMuc()

    Dim Name As String

    Dim Path As String

    Dim intAttr As Integer

    Dim strFilePath As String

        Path = strDirQueue(iHead)

        Name = Dir(Path, vbDirectory)

        Do While Name <> “”   ‘ Còn phần tử.

            ‘ Bỏ qua thư mục hiện hành và cha.

            If Name <> “.” And Name <> “..” Then

                strFilePath = Path & Name

                intAttr = GetAttr(strFilePath)

                If (intAttr And vbDirectory) = vbDirectory Then

       ‘ Nếu là thư mục thì chứa vào danh sách để duyệt sau

                    strDirQueue(iTail) = strFilePath & “\”

                    iTail = iTail + 1

                    If (iTail > QMAX) Then iTail = 0

                Else

        ‘ Nếu là file thì tăng số lượng lên 1 đơn vị

                    filecount = filecount + 1

                End If

            End If

            Name = Dir   ‘ Đọc phần tử kế tiếp trong thư mục.

        Loop

    End Sub

    Chuyên mục: Lập trình