Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Класс для обработки INI файлов Добавлено: 12.04.09 14:27  

Автор вопроса:  DLF
Выношу на общее обсуждение класс для работы с файлами конфигурации. Приветствуются все критические замечания.
Исключение: Переходи на XML или используй My.Settings

Public Class INI
    Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal iniSection As String, ByVal iniKey As String, ByVal iniDefault As String, ByVal iniValue As String, ByVal iniBuffer As Integer, ByVal iniFilename As String) As Integer
    Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal iniSection As String, ByVal iniKey As String, ByVal iniValue As String, ByVal iniFilename As String) As Integer

    Shared Function Read(ByVal iniSection As String, ByVal iniKey As String, ByVal iniDefault As String) As String
        Dim iniBuffer As String = Space(255)
        Dim iniLength As Integer = GetPrivateProfileString(iniSection, iniKey, iniDefault, iniBuffer, 255, Application.StartupPath + "SM+Settings.ini")
        Return iniBuffer.Substring(0, iniLength)
    End Function

    Shared Sub Wright(ByVal iniSection As String, ByVal iniKey As String, ByVal iniValue As String)
        WritePrivateProfileString(iniSection, iniKey, iniValue, Application.StartupPath + "SM+Settings.ini")
    End Sub

    Shared Sub DeleteValue(ByVal iniSection As String, ByVal iniKey As String)
        WritePrivateProfileString(iniSection, iniKey, Nothing, Application.StartupPath + "SM+Settings.ini")
    End Sub

    Shared Sub DeleteSection(ByVal iniSection As String)
        WritePrivateProfileString(iniSection, Nothing, Nothing, Application.StartupPath + "SM+Settings.ini")
    End Sub
End Class

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #1 Добавлено: 12.04.09 14:29
Application.StartupPath + "SM+Settings.ini" тут путь к INI файлу.

Ответить

Номер ответа: 2
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #2 Добавлено: 12.04.09 22:57
Неужели всё так хорошо? Может быть проблы с грамотностью написания кода или ещё чего-нибудь...

Ответить

Номер ответа: 3
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #3
Добавлено: 13.04.09 00:05
Чтобы изменить путь к файлу надо постоянно класс менять?

Ответить

Номер ответа: 4
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #4 Добавлено: 13.04.09 00:26
В данном случае INI файл создается в директории, где находится EXE файл, что, как я считаю, есть хорошо.

Ответить

Номер ответа: 5
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #5 Добавлено: 13.04.09 00:29
Вместо "SM+Settings.ini" можете указать любое имя файла, естественно с расширением .ini

Ответить

Номер ответа: 6
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #6 Добавлено: 13.04.09 00:32
Хотя спасибо за идею...
Есть информация к размышлению...

Ответить

Номер ответа: 7
Автор ответа:
 __Pavel__



Вопросов: 29
Ответов: 284
 Web-сайт: ммм.сайта.НЕТ
 Профиль | | #7
Добавлено: 13.04.09 18:47
Есть информация к размышлению...

а че тут думать-то? :)
  1. Public Class INI
  2.     Shared pr_Path As String
  3.  
  4.     Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal iniSection As String, ByVal iniKey As String, ByVal iniDefault As String, ByVal iniValue As String, ByVal iniBuffer As Integer, ByVal iniFilename As String) As Integer
  5.     Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal iniSection As String, ByVal iniKey As String, ByVal iniValue As String, ByVal iniFilename As String) As Integer
  6.  
  7.     Sub New(ByVal p_Path As String)
  8.         Path = p_Path
  9.     End Sub
  10.  
  11.     Public Property Path() As String
  12.         Get
  13.             Return pr_Path
  14.         End Get
  15.         Set(ByVal value As String)
  16.             pr_Path = value
  17.         End Set
  18.     End Property
  19.  
  20.     Shared Function Read(ByVal iniSection As String, ByVal iniKey As String, ByVal iniDefault As String) As String
  21.         Dim iniBuffer As String = Space(255)
  22.         Dim iniLength As Integer = GetPrivateProfileString(iniSection, iniKey, iniDefault, iniBuffer, 255, pr_Path)
  23.         Return iniBuffer.Substring(0, iniLength)
  24.     End Function
  25.  
  26.     Shared Sub Wright(ByVal iniSection As String, ByVal iniKey As String, ByVal iniValue As String)
  27.         WritePrivateProfileString(iniSection, iniKey, iniValue, pr_Path)
  28.     End Sub
  29.  
  30.     Shared Sub DeleteValue(ByVal iniSection As String, ByVal iniKey As String)
  31.         WritePrivateProfileString(iniSection, iniKey, Nothing, pr_Path)
  32.     End Sub
  33.  
  34.     Shared Sub DeleteSection(ByVal iniSection As String)
  35.         WritePrivateProfileString(iniSection, Nothing, Nothing, pr_Path)
  36.     End Sub
  37. End Class

Ответить

Номер ответа: 8
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #8 Добавлено: 14.04.09 03:28
Только
Shared pr_Path As String
нужно заменить на
Private Shared pr_Path As String

Ответить

Номер ответа: 9
Автор ответа:
 DLF



Вопросов: 9
Ответов: 53
 Профиль | | #9 Добавлено: 14.04.09 20:35
Всем спасибо!

Ответить

Номер ответа: 10
Автор ответа:
 Сергей



Вопросов: 0
Ответов: 1
 Профиль | | #10 Добавлено: 05.10.10 12:08
как обращаться к методам класса? может их нужно сделать Public а не Shared ?

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 05.10.10 12:56
если через экзампляр, то Public. Если нет, то Public Shared

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам