• 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

Lưu nhiều thiết lập khác nhau

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
tindl88
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 363
Ngày tham gia: T.Bảy 26/04/2008 6:10 pm
Has thanked: 16 time
Been thanked: 10 time

Lưu nhiều thiết lập khác nhau

Gửi bàigửi bởi tindl88 » T.Tư 05/11/2008 9:53 am

Thủ thuật: Lưu nhiều thiết lập khác nhau
Tác giả: tindl88
Mô tả: Lưu nhiều thiết lập khác nhau


Mã: Chọn hết

  1. Option Explicit
  2.  
  3. Private Type OPENFILENAME
  4.     lStructSize As Long
  5.     hwndOwner As Long
  6.     hInstance As Long
  7.     lpstrFilter As String
  8.     lpstrCustomFilter As String
  9.     nMaxCustFilter As Long
  10.     nFilterIndex As Long
  11.     lpstrFile As String
  12.     nMaxFile As Long
  13.     lpstrFileTitle As String
  14.     nMaxFileTitle As Long
  15.     lpstrInitialDir As String
  16.     lpstrTitle As String
  17.     flags As Long
  18.     nFileOffset As Integer
  19.     nFileExtension As Integer
  20.     lpstrDefExt As String
  21.     lCustData As Long
  22.     lpfnHook As Long
  23.     lpTemplateName As String
  24. End Type
  25.  
  26. Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long
  27. Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
  28. Dim OFN As OPENFILENAME
  29.  
  30. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  31. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  32.  
  33. Private Function ReadINI(Filename As String, Section As String, Key As String) As String
  34. Dim strBuf As String * 255
  35. Dim l As Long
  36.     l = GetPrivateProfileString(Section, Key, "", strBuf, 255, Filename)
  37.     ReadINI = Left$(strBuf, l)
  38. End Function
  39.  
  40. Private Sub WriteINI(Filename As String, Section As String, Key As String, Value As String)
  41.     WritePrivateProfileString Section, Key, Value, Filename
  42. End Sub
  43.  
  44. Private Sub LoadINI()
  45.     OFN.lStructSize = Len(OFN)
  46.     OFN.hwndOwner = Me.hWnd
  47.     OFN.hInstance = App.hInstance
  48.     OFN.lpstrFilter = "Perfect World Settings (*.ini)" & Chr(0) & "*.ini"
  49.     OFN.lpstrFile = "Settings" & String$(250 - Len("Settings"), 0)
  50.     OFN.nMaxFile = 255
  51.     OFN.lpstrDefExt = "ini"
  52.     OFN.lpstrFileTitle = Space$(254)
  53.     OFN.nMaxFileTitle = 255
  54.     OFN.lpstrInitialDir = CurDir
  55.     OFN.lpstrTitle = "Load Settings"
  56.     OFN.flags = 0
  57.    
  58.     If GetOpenFileName(OFN) Then
  59.         Me.Text1 = ReadINI(OFN.lpstrFile, "Settings", "Text1")
  60.         Me.Check1 = ReadINI(OFN.lpstrFile, "Settings", "Check1")
  61.         Me.Check2 = ReadINI(OFN.lpstrFile, "Settings", "Check2")
  62.         Me.List1.ListIndex = ReadINI(OFN.lpstrFile, "Settings", "ListIndex")
  63.         Drive1.Drive = ReadINI(OFN.lpstrFile, "Settings", "Drive")
  64.         Dir1.Path = ReadINI(OFN.lpstrFile, "Settings", "Dir")
  65.         Option1.Value = ReadINI(OFN.lpstrFile, "Settings", "Opt1")
  66.         Option2.Value = ReadINI(OFN.lpstrFile, "Settings", "Opt2")
  67.     Else
  68.         Exit Sub
  69.     End If
  70. End Sub
  71.  
  72. Private Sub SaveINI()
  73.     OFN.lStructSize = Len(OFN)
  74.     OFN.hwndOwner = Me.hWnd
  75.     OFN.hInstance = App.hInstance
  76.     OFN.lpstrFilter = "Perfect World Settings (*.ini)" & Chr$(0) & "*.ini"
  77.     OFN.lpstrFile = "Settings" & String$(250 - Len("Settings"), 0)
  78.     OFN.nMaxFile = 255
  79.     OFN.lpstrFileTitle = Space$(254)
  80.     OFN.nMaxFileTitle = 255
  81.     OFN.lpstrDefExt = "ini"
  82.     OFN.lpstrInitialDir = CurDir
  83.     OFN.lpstrTitle = "Save Settings"
  84.     OFN.flags = 0
  85.    
  86.         If GetSaveFileName(OFN) Then
  87.             WriteINI OFN.lpstrFile, "Settings", "Text1", Text1.Text
  88.             WriteINI OFN.lpstrFile, "Settings", "Check1", Check1.Value
  89.             WriteINI OFN.lpstrFile, "Settings", "Check2", Check2.Value
  90.             WriteINI OFN.lpstrFile, "Settings", "ListIndex", List1.ListIndex
  91.             WriteINI OFN.lpstrFile, "Settings", "Drive", Drive1.Drive
  92.             WriteINI OFN.lpstrFile, "Settings", "Dir", Dir1.Path
  93.             WriteINI OFN.lpstrFile, "Settings", "Opt1", Option1.Value
  94.             WriteINI OFN.lpstrFile, "Settings", "Opt2", Option2.Value
  95.         Else
  96.             Exit Sub
  97.         End If
  98. End Sub
  99.  
  100. Private Sub cmdClear_Click()
  101.     Text1.Text = ""
  102.     Check1.Value = 0
  103.     Check2.Value = 0
  104.     Option1.Value = False
  105.     Option2.Value = False
  106.     Dir1.Path = CurDir
  107.     Drive1.Drive = Dir1.Path
  108.     List1.ListIndex = -1
  109. End Sub
  110.  
  111. Private Sub cmdLoad_Click()
  112.     LoadINI
  113. End Sub
  114.  
  115. Private Sub cmdSave_Click()
  116.     SaveINI
  117. End Sub
  118.  
  119. Private Sub Drive1_Change()
  120. On Error Resume Next
  121.     Dir1.Path = Drive1.Drive
  122. End Sub
  123.  
  124. Private Sub Form_Load()
  125.     List1.AddItem "Tin"
  126.     List1.AddItem "An"
  127. End Sub
  128.  
Tập tin đính kèm
INI.rar
Make INI
(2.23 KiB) Đã tải 461 lần


cứng nhắc...vớ vẩn

Hình đại diện của người dùng
FVS
Thành viên tích cực
Thành viên tích cực
Bài viết: 178
Ngày tham gia: T.Ba 13/05/2008 10:38 am

Re: Lưu nhiều thiết lập khác nhau

Gửi bàigửi bởi FVS » CN 09/11/2008 6:49 am

Nói về lưu thiết lập. Em nghĩ, với app không mang tính chất removable dùng registry của win mà lưu setting để cho dữ liệu được tập chung, đồng bộ (reg của win làm ra chủ yếu để phục vụ mục đích đó). Hơn nữa VB6 cũng cung cấp ấy hàm cơ bản để phục vụ cho việc này, rất đơn giản.
Tất nhiên, save ở file ngoài nhìu khi cũng rất cần thiết.
Nhật kí giải thuật - FVS:

Http://GiaiThuat.WordPress.Com

tindl88
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 363
Ngày tham gia: T.Bảy 26/04/2008 6:10 pm
Has thanked: 16 time
Been thanked: 10 time

Re: Lưu nhiều thiết lập khác nhau

Gửi bàigửi bởi tindl88 » CN 09/11/2008 9:05 pm

Mình cũng nghĩ như bạn vậy. Nhưng sau 1 thời gian sử dụng mình thấy nó chậm hơn so với cái INI này. Cái AC Wallpaper của mình cũng lưu trong Registry, load lâu wa1 chừng luôn.
Chuyển wa Cái INI này xài thấy tốt
cứng nhắc...vớ vẩn


Quay về “[VB] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách