• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Thao tác đọc,ghi dữ liệu thiết lập cấu hình cho chương trình

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
User avatar
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Posts: 531
Joined: Wed 02/04/2008 2:08 pm
Location: RGames Team
Has thanked: 3 times
Been thanked: 17 times
Contact:

Thao tác đọc,ghi dữ liệu thiết lập cấu hình cho chương trình

Postby Dang Minh Du » Fri 23/05/2008 12:45 pm

Tên bài viết: Thao tác đọc và ghi dữ liệu để thiết lập cấu hình cho chương
Tác giả: Đặng Minh Dự
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Bài viết trình bày cách thiết lập cấu hình cho chương trình ở mỗi lần khởi động, cho phù hợp với việc sử dụng của người dùng.


Cụ thể:
Trong quá trình lập trình, khi chưa có nhiều kiến thức và kinh nghiệm, đôi khi bạn vô tình làm cho chương trình của mình trở nên quá mặc định, cứng nhắc. Qua bài viết này những ai chưa biết (thường là mấy ngươì mới bắt đầu thôi) thì sẽ có thêm một kinh nghiệm mới giúp cho những chương trình sau này trở nên linh hoạt, “ngon lành” hơn.

Xét ví dụ sau:
Chẳng hạn bạn viết một chương trình nghe nhạc, nó có Equalizer, Vomue, Playlist. Nếu bạn không để ý về việc thiết lập cấu hình và load “History” ở mỗi lần khởi động, có thể người dùng sẽ rất bực mình về điều đó. Chẳng hạn như Equalizer, khi lập trình, bạn luôn thiết kế mặt định các Scroll Bar hay Slider ở một Value nào đó(VD như tất cả Slider có Value=0). Như vậy, mỗi lần mở chương trình, người dùng phải chỉnh nó cho thích hợp, điều này đôi khi như “chọc giận” người dùng (Ai hỏng bực thì rãnh hơi ngồi chỉnh đi).
Nhưng nếu bạn biết Save lại Value của mấy cái này khi End chương trình và Load nó mỗi khi khởi động thì có lẽ người dùng sẽ cảm thấy hài lòng hơn.
Để làm các việc Save và Load, bạn phải biết các thao tác ghi và đọc file (đơn giản nhất là file text). Bạn đọc ví dụ sau để hiểu rõ hơn.
VD1: Save và Load Value của Volume Bar (Trong CT nghe nhạc)

A)Save:

Bạn có thể thiết lập biến cố Unload của Main form để thực hiện công việc này (hoặc có nhiều cách khác, ở đây “tui” chỉ nói cách này thôi):

Code: Select all

  1. Private Sub Form_Unload(Cancel As Integer)
  2.    Dim i, FileName, FileNumber
  3.    FileName = App.Path & "\Data\VolumeHistory.ini"  'Đường dẫn tới file
  4.    FileNumber = FreeFile 'Giải phóng file  
  5. Open FileName For Output As FileNumber 'Mở file, chuẩn bị ghi    
  6. Print #FileNumber, VolumeBar.Value 'VolumeBar là một Slider
  7.    Close FileNumber  ' Đóng file
  8. End Sub
  9. 'Lưu ý: Khi ghi, đường dẫn tới thư mục ghi file phải tồn tại, nếu không sẽ xảy ra lỗi. Như VD trên thì thư Mục Data phải tồn tại, nếu không ta phải thêm lệnh tạo thư mục Data nếu xảy ra lỗi:
  10. Private Sub Form_Unload(Cancel As Integer)
  11. On Error GoTo Err
  12.    Dim i, FileName, FileNumber
  13.    FileName = App.Path & "\Data\VolumeHistory.ini"
  14.    FileNumber = FreeFile 'Giai phong file
  15.    Open FileName For Output As FileNumber
  16. Err:
  17.     If Err = 76 Then 'Lỗi số 76 là lỗi gây ra khi thư mục Data không tồn tại  
  18.  MkDir App.Path & "\Data" 'Tạo thư mục Data
  19.     End If
  20.        Print #FileNumber, VolumeBar.Value
  21.    Close FileNumber  
  22. End Sub

B)Load:
Như vậy, bạn đã lưu được giá trị của VolumBar, bây giờ ta phải làm cho chương trình mở, đọc file và thiết lập VolumeBar khi chương trình được mở (cũng có nhiều cách, ở đây “tui” trình bày mở đọc file khi Mainform load):

Code: Select all

  1. Private Sub Form_Load()
  2.    Dim i, FileName, FileNumber, anItem
  3.    FileName = App.Path & "\Data\VolumeHistory.ini"
  4.    FileNumber = FreeFile
  5.    Open FileName For Input As FileNumber
  6.       Line Input #FileNumber, anItem 'Đọc dữ liệu theo dòng
  7.         VolumeBar.Value = anItem 'Gan Value cho VolumeBar
  8.    Close FileNumber ‘Đóng file
  9. End Sub
  10. 'Lưu ý: khi mở tất nhiên FileName phải tồn tại, nếu không sẽ xảy ra lỗi. Bạn nên bẫy lỗi như sau cho chắc ăn: (còn nhiều trường hợp lỗi khác nữa, bạn tự bẫy cho phù hợp)
  11.  
  12. Private Sub Form_Load()
  13. On Error GoTo Err
  14.    Dim i, FileName, FileNumber, anItem
  15.    FileName = App.Path & "\Data\VolumeHistory.ini"
  16.    FileNumber = FreeFile
  17.    Open FileName For Input As FileNumber
  18. Err:
  19. If Err = 53 Then 'Lỗi 53 xảy ra do FileName không tồn tại
  20. MsgBox "Khong the mo du lieu, vui long cai dat lai", vbOKOnly, "Thong bao loi"
  21. End
  22. End If
  23.       Line Input #FileNumber, anItem
  24.         VolumeBar.Value = anItem
  25.    Close FileNumber
  26. End Sub 

VD2: Save Playlist (Trong CT nghe nhạc) (Đặng Minh Dự sưu tầm)

A)Save:

Code: Select all

  1. Private Sub CmdSave_Click()
  2.    Dim i, FileName, FileNumber
  3.    ' Obtain Folder where this program's EXE file resides
  4.    FileName = App.Path
  5.    ' Make sure FileName ends with a backslash   If Right(FileName, 1) <> "\" Then FileName = FileName & "\"
  6.    FileName = FileName & "MyList.txt"  ' name output text file MyList.txt
  7.    ' Obtain an available filenumber from the operating system
  8.    FileNumber = FreeFile
  9.    ' Open the FileName as an output file , using FileNumber as FileHandle
  10.    Open FileName For Output As FileNumber
  11.    ' Now iterate through each item of lstNames
  12.    For i = 0 To lstNames.ListCount - 1
  13.       ' Write the List item to file. Make sure you use symbol # in front of FileNumber
  14.       Print #FileNumber, lstNames.List(i)
  15.    Next
  16.    Close FileNumber  ' Close the output file
  17. End Sub


B)Load:

Code: Select all

  1. Private Sub CmdLoad_Click()
  2.    Dim i, FileName, FileNumber, anItem
  3.    ' Obtain Folder where this program's EXE file resides
  4.    FileName = App.Path
  5.    ' Make sure FileName ends with a backslash
  6.    If Right(FileName, 1) <> "\" Then FileName = FileName & "\"
  7.    FileName = FileName & "MyList.txt"
  8.    ' Obtain an available filenumber from the operating system
  9.    FileNumber = FreeFile
  10.    ' Open the FileName as an input file , using FileNumber as FileHandle
  11.    Open FileName For Input As FileNumber
  12.    lstNames.Clear  ' Clear the Listbox first
  13.    ' Now read each line until reaching End-Of-File, i.e. no more data
  14.    Do While NOT EOF(FileNumber)
  15.       Line Input #FileNumber, anItem  ' Read a line from the Text file into variable anItem
  16.       lstNames.AddItem anItem  ' Add this item to the bottom of lstNames]
  17.    Loop
  18.    Close FileNumber  ' Close the input file
  19. End Sub


~°Dòng Sông Mùa Thu°~
Studying...!

User avatar
BasicVB
Thành viên năng nổ
Thành viên năng nổ
Posts: 75
Joined: Sat 29/03/2008 2:07 pm
Contact:

Re: Thao tác đọc,ghi dữ liệu thiết lập cấu hình cho chương trình

Postby BasicVB » Fri 23/05/2008 3:49 pm

Code: Select all

  1.  
  2. Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As Any, ByVal lsString As Any, ByVal lplFilename As String) As Long
  3. Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPriviteProfileIntA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
  4. Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationname As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  5.  
  6. Public Function WriteSetting(Section As String, Key As String, Data As String,sPath As String)
  7. WritePrivateProfileString Section, Key, Data, sPath
  8. End Function
  9.  
  10. Public Function ReadSetting(Section As String, Key As String,sPath As String) As String
  11. Dim Temp As String * 50
  12. Dim lpDefault As String
  13. GetPrivateProfileString Section, Key, lpDefault, Temp, Len(Temp), IniFileName
  14. ReadINI = Trim(Temp)
  15. End Function
  16.  
  17. Sử dụng
  18. WriteSetting "MUSICSOFT","VOLUME",Slider1.Value,"C:\ConfigTest.ini"
  19. Slider1.Value=ReadSetting("MUSICSOFT","VOLUME","C:\ConfigTest.ini"
  20.  
[/code]


Return to “[VB] Bài viết hướng dẫn”

Who is online

Users browsing this forum: No registered users and 1 guest