• Thứ Hai, 18/01/2010 09:06 (GMT+7)

    User Control của Windows Media không xử lý được file mp3 có dấu tiếng Việt

    Câu hỏi :
    Tôi gặp hai vấn sau khi lập trình VB 6.0, mong được hướng dẫn.
     1. Đoạn code khi xử lý DriveListBox như sau:
     Private Sub Drive1_Change()
     Dir1.Path = Drive1.Drive
     End Sub
     sẽ báo lỗi khi ta chọn ổ đĩa CDROM hay USB mà chúng chưa cắm vào máy tính hoặc ổ đĩa chưa có đĩa trong đó.

     2. Tên file mp3 có dấu tiếng Việt, dùng Windows Media thì play được, nhưng sử dụng control của nó trong chương trình VB thì không play được

    Trả lời :
    1. Đúng là đoạn code của bạn sẽ bị báo lỗi khi bạn chọn ổ CDROM hay ổ USB trong danh sách của điều khiển DriveListBox mà chưa gắn CD hay đĩa USB vào máy. Lý do là trong thủ tục xử lý sự kiện chọn ổ đĩa mà bạn đã viết như trên có chứa lệnh gán:
     Dir1.Path = Drive1.Drive
     Lệnh này sẽ kích hoạt hoạt động đọc nội dung trên CDROM hay trên đĩa USB tương ứng hầu xác định danh sách thư mục được chứa trên nó và hiển thị vào điều khiển DirListBox. Tuy nhiên vì CDROM hay USB chưa được gắn nên hoạt động đọc thông tin bị lỗi.
     2. Bạn không nói rõ là đã xác định tên file bằng điều khiển nào, bằng cách nhập tên file trực tiếp vào textbox hay bằng cách duyệt chọn file thông qua điều khiển CommonDialog... nên chúng tôi chỉ trả lời tổng quát. Bạn cần lưu ý rằng hầu hết các điều khiển chuẩn của môi trường VB 6.0 như TextBox, CommandDialog... đều chỉ hỗ trợ chuỗi ANSI chứ chưa hỗ trợ chuỗi Unicode tiếng Việt. Do đó, nếu bạn dùng TexBox hay CommonDialog để xác định tên file có chứa tiếng Việt Unicode thì các điều khiển này sẽ không hiểu đúng, chúng đổi từng ký tự Unicode thành ký tự '?'. Riêng điều khiển Windows Media Player (các version 8.0 trở đi) thì hiểu đúng chuỗi tiếng Việt Unicode trong tên file.
     Tóm lại, muốn xác định tên file có chuỗi Unicode tiếng Việt, bạn cần dùng các điều khiển mới hỗ trợ tốt mã Unicode, thí dụ các điều khiển trong thư viện "Microsoft Form2 Library". Sau đây là qui trình điển hình xây dựng 1 ứng dụng VB 6.0 nhỏ demo việc chọn file để chơi bằng Windows Media Player:
     1. Chạy VB 6.0, khi cửa sổ "New project" hiển thị, chọn icon "Standard EXE" rồi button Open để tạo mới Project chứa Form đơn giản.
     2. Chọn menu Project.Components để hiển thị cửa sổ Components, duyệt tìm và chọn 2 thư viện có tên là "Microsoft Forms 2 Object Library" và "Windows Media Player" rồi OK để thêm các điều khiển trong 2 thư viện này vào ToolBox của Project hiện hành.
     3. Chọn Form để hiển thị cửa sổ Properties của nó lên, duyệt tìm trong danh sách mục Font, thay đổi tên font thành "Tahoma" hay tên 1 font nào đó mà bạn chắc chắn hỗ trợ tốt tiếng Việt Unicode.
     4. Vẽ Form có 1 TextBox (của Form2) tên là txtFileName, 1 button tên là btnStart, và 1 điều khiển Windows Media Player có tên là WMP1 như sau:
     5. Nhấn đúp chuột vào button Start để tạo thủ tục xử lý click chuột trên button và viết code như sau:
     Private Sub btnStart_Click()
     WMP1.URL = txtFileName.Text
     End Sub
     6. Chọn menu Run.Start để chạy thử ứng dụng. Khi form ứng dụng hiển thị, hãy nhập thử chuỗi Unicode miêu tả đường dẫn nhận dạng 1 file multimedia nào đó cần chơi (thí dụ c:\Tệp bài hát Tiếng đàn Sinh viên.mp3) rồi nhấn button Start để chơi file này.
     
    Chuyên mục: Lập trình