Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Файл настроек программы Добавлено: 03.09.08 10:35  

Автор вопроса:  Евгений
Здравствуйте. Програмлю недавно, оттого глупый вопрос. А как обычно хранят настройки задаваемые пользователем в программе? Я понимаю, что обычно либо в файле, либо в реестре. Но как их считать/создать?
Ведь файл типа
[BD]
name=bla-bla-bla
pass=asdasdasd
[profile]
...

Как разбирать такой файл?
Заранее спасибо.

Ответить

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

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 03.09.08 12:43
На вот тебе класс для работы с INI:
'*************************************************************************
'*                    Êëàññ äëÿ ðàáîòû ñ INI-ôàéëàìè                     *
'*-----------------------------------------------------------------------*
'*       Îïèñàíèå:                                                       *
'*  AddSection     - äîáàâëÿåò íîâóþ ñåêöèþ                              *
'*  AddValue       - äîáàâëÿåò íîâûé ïàðàìåòð â ñåêöèþ                   *
'*  Filename       - èìÿ ôàéëà. Åñëè ôàéë ñóùåñòâóåò, îí çàãðóæàåòñÿ.    *
'*  RemoveSection  - óäàëÿåò ñåêöèþ                                      *
'*  RemoveValue    - óäàëÿåò ïàðàìåòð èç ñåêöèè                          *
'*  SectionExists  - âîçâðàùàåò True, åñëè ñåêöèÿ ñóùåñòâóåò             *
'*  SectionName    - âîçâðàùàåò èìÿ ñåêöèè ïî åå íîìåðó                  *
'*  SectionsCount  - âîçâðàùàåò êîëè÷åñòâî ñåêöèé                        *
'*  UpdateFile     - ñîõðàíÿåò ôàéë                                      *
'*  Value          - âîçâðàùàåò/óñòàíàâëèâàåò çíà÷åíèå ïàðàìåòðà         *
'*  ValueExists    - âîçâðàùàåò True, åñëè ïàðàìåòð ñóùåñòâóåò           *
'*  ValueName      - âîçâðàùàåò èìÿ ïàðàìåòðà ïî åãî íîìåðó              *
'*  ValuesCount    - âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ â çàäàííîé ñåêöèè  *
'*-----------------------------------------------------------------------*
'*                          17 èþíÿ 2000  10:43                          *
'*         Copyright © 2000 &#202;&#238;&#231;&#251;&#240;&#229;&#226; &#196;&#236;&#232;&#242;&#240;&#232;&#233; <;Dmitriy@e-mail.ru>          *
'*************************************************************************
Option Explicit

' &#194;&#241;&#229; &#244;&#243;&#237;&#234;&#246;&#232;&#232; &#226;&#238;&#231;&#226;&#240;&#224;&#249;&#224;&#254;&#242; True, &#229;&#241;&#235;&#232; &#237;&#229;&#242; &#238;&#248;&#232;&#225;&#234;&#232;

Private mFilename As String

Private AllSections() As tSection

Private Type tValue
    Name As String
    cntValue As String
End Type
Private Type tSection
    Name As String
    Values() As tValue
End Type
Public Function RemoveSection(ByVal Section As String) As Boolean
Dim i&, uSN$, a&
uSN = UCase$(Section)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#205;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255; &#229;&#241;&#242;&#252;, &#241;&#228;&#226;&#232;&#227;&#224;&#229;&#236; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#251; "&#226;&#237;&#232;&#231;"
        For a = i To UBound(AllSections) - 1
            AllSections(a) = AllSections(a + 1)
        Next a
        ' &#211;&#228;&#224;&#235;&#255;&#229;&#236;
        ReDim Preserve AllSections(UBound(AllSections) - 1)
        RemoveSection = True
        Exit Function
    End If
Next i
End Function
Public Property Get SectionExists(ByVal Section As String) As Boolean
Dim i&, uSN$
uSN = UCase$(Section)
' &#207;&#240;&#238;&#241;&#242;&#238; &#239;&#240;&#238;&#225;&#229;&#230;&#232;&#236;&#241;&#255; &#239;&#238; &#226;&#241;&#241;&#229;&#236; &#241;&#229;&#234;&#246;&#232;&#255;&#236; &#232; &#239;&#238;&#241;&#236;&#238;&#242;&#240;&#232;&#236;, &#229;&#241;&#242;&#252; &#235;&#232; &#231;&#224;&#228;&#224;&#237;&#237;&#224;&#255;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#197;&#241;&#242;&#252;!
        SectionExists = True
        Exit Property
    End If
Next i
End Property
Public Function UpdateFile() As Boolean
' &#200;&#236;&#255; &#244;&#224;&#233;&#235;&#224; &#237;&#229; &#231;&#224;&#228;&#224;&#237;&#238; - &#234;&#243;&#228;&#224; &#241;&#238;&#245;&#240;&#224;&#237;&#255;&#242;&#252;-&#242;&#238;? :)
If Len(mFilename) = 0 Then Exit Function
Dim i&, a&
Open mFilename For Output Access Write Lock Write As #1
For i = 1 To UBound(AllSections)
    ' &#199;&#224;&#239;&#232;&#241;&#252; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
    With AllSections(i)
        Print #1, "[" & .Name & "]"
        ' &#199;&#224;&#239;&#232;&#241;&#252; &#226;&#241;&#229;&#245; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#238;&#226; &#226; &#241;&#229;&#234;&#246;&#232;&#232;
        For a = 1 To UBound(.Values)
            Print #1, .Values(a).Name & "=" & .Values(a).cntValue
        Next a
    End With
    Print #1, vbNullString
Next i
Close #1
UpdateFile = True
End Function
Public Property Get ValueExists(ByVal Section As String, ByVal ValueName As String) As Boolean
Dim i&, uSN$, uVN$, a&
uSN = UCase$(Section)
uVN = UCase$(ValueName)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#205;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255;, &#242;&#229;&#239;&#229;&#240;&#252; &#232;&#249;&#229;&#236; &#226; &#237;&#229;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
        For a = 1 To UBound(AllSections(i).Values)
            If AllSections(i).Values(a).Name = uVN Then
                ' &#200;&#241;&#234;&#238;&#236;&#251;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
                ValueExists = True
                Exit Property
            End If
        Next a
        Exit Property
    End If
Next i
End Property
Public Property Get ValueName(ByVal Section As String, ByVal Index As Long) As String
' &#207;&#240;&#232;&#236;&#229;&#247;&#224;&#237;&#232;&#229;: &#229;&#241;&#235;&#232; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240; &#232;&#235;&#232; &#241;&#229;&#234;&#246;&#232;&#255; &#237;&#224;&#233;&#228;&#229;&#237;&#251; &#237;&#229; &#225;&#243;&#228;&#243;&#242;, &#242;&#238; &#241;&#226;&#238;&#233;&#241;&#242;&#226;&#238;
' &#226;&#229;&#240;&#237;&#229;&#242; vbNullChar - &#241;&#232;&#236;&#226;&#238;&#235; &#241; &#237;&#243;&#235;&#229;&#226;&#251;&#236; &#234;&#238;&#228;&#238;&#236;
Dim uSN$, i&
uSN = UCase$(Section)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
            '&#205;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255;
        If Index > 0 And Index <= UBound(AllSections(i).Values) Then
            ' &#205;&#243;&#230;&#237;&#251;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
            ValueName = AllSections(i).Values(Index).Name
            Exit Property
        Else
            ' &#200;&#237;&#228;&#229;&#234;&#241; &#226;&#237;&#229; &#227;&#240;&#224;&#237;&#232;&#246; &#228;&#232;&#224;&#239;&#224;&#231;&#238;&#237;&#224;...
            ValueName = vbNullChar
        End If
        Exit Property
    End If
Next
ValueName = vbNullChar
End Property
Public Function RemoveValue(ByVal Section As String, ByVal ValueName As String) As Boolean
Dim i&, a&, uVN$, uSN$, c&
uSN = UCase$(Section)
uVN = UCase$(ValueName)
' &#207;&#240;&#238;&#241;&#236;&#238;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#205;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255; &#229;&#241;&#242;&#252;
        For a = 1 To UBound(AllSections(i).Values)
            If UCase$(AllSections(i).Values(a).Name) = uVN Then
                ' &#205;&#243;&#230;&#237;&#251;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240; &#229;&#241;&#242;&#252;
                With AllSections(i)
                    ' &#209;&#228;&#226;&#232;&#227; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#238;&#226; "&#226;&#237;&#232;&#231;" &#237;&#224; &#238;&#228;&#232;&#237;
                    For c = a To UBound(.Values) - 1
                        .Values(a) = .Values(a + 1)
                    Next c
                    ' &#211;&#228;&#224;&#235;&#229;&#237;&#232;&#229; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#224;
                    ReDim Preserve .Values(UBound(.Values) - 1)
                    RemoveValue = True
                    Exit Function
                End With
            End If
        Next
        Exit Function
    End If
Next i
End Function
Public Function AddValue(ByVal Section As String, ByVal ValueName As String, Optional ByVal lValue As String = vbNullString) As Boolean
Dim uSN$, i&, uVN$, a&
uSN = UCase$(Section)
uVN = UCase$(ValueName)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240;&#232;&#236;-&#234;&#224; &#226;&#241;&#229; &#241;&#229;&#234;&#246;&#232;&#232;...
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
add_value:
        ' &#197;&#241;&#242;&#252; &#237;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255;!
        For a = 1 To UBound(AllSections(i).Values)
            If UCase$(AllSections(i).Values(a).Name) = uVN Then
                ' &#210;&#224;&#234;&#224;&#255; &#241;&#242;&#240;&#238;&#234;&#224; &#243;&#230;&#229; &#229;&#241;&#242;&#252;
                Exit Function
            End If
        Next a
        ' &#196;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236; &#237;&#238;&#226;&#251;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
        With AllSections(i)
            ReDim Preserve .Values(UBound(.Values) + 1)
            .Values(UBound(.Values)).Name = ValueName
            .Values(UBound(.Values)).cntValue = lValue
        End With
        AddValue = True
        Exit Function
    End If
Next i
' &#209;&#229;&#234;&#246;&#232;&#232; &#242;&#224;&#234;&#238;&#233; &#237;&#229;&#242;, &#228;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236;...
AddSection Section
GoTo add_value
End Function
Public Property Get ValuesCount(ByVal Section As String) As Long
' &#207;&#240;&#232;&#236;&#229;&#247;&#224;&#237;&#232;&#229;: &#229;&#241;&#235;&#232; &#241;&#229;&#234;&#246;&#232;&#255; &#237;&#229; &#237;&#224;&#233;&#228;&#229;&#237;&#224;, &#241;&#226;&#238;&#233;&#241;&#242;&#226;&#238; &#226;&#229;&#240;&#237;&#229;&#242;
' &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229; -1.
Dim uSN$, i&
uSN = UCase$(Section)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#205;&#243;&#230;&#237;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255;
        ValuesCount = UBound(AllSections(i).Values)
        Exit Property
    End If
Next
ValuesCount = -1
End Property
Public Property Let Value(ByVal Section As String, ByVal ValueName As String, ByVal vData As String)
Dim i&, a&, uVN$, uSN$
uSN = UCase$(Section)
uVN = UCase$(ValueName)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#238;&#226; &#226; &#241;&#229;&#234;&#246;&#232;&#232;
        For a = 1 To UBound(AllSections(i).Values)
            If UCase$(AllSections(i).Values(a).Name) = uVN Then
                ' &#205;&#224;&#248;&#235;&#232; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;, &#238;&#225;&#237;&#238;&#226;&#235;&#255;&#229;&#236; &#229;&#227;&#238; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229;...
                AllSections(i).Values(a).cntValue = vData
                Exit Property
            End If
        Next
        ' &#205;&#229; &#237;&#224;&#248;&#235;&#232; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;, &#228;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236; &#237;&#238;&#226;&#251;&#233;...
        With AllSections(i)
            ReDim Preserve .Values(UBound(.Values) + 1)
            .Values(UBound(.Values)).cntValue = vData
            .Values(UBound(.Values)).Name = ValueName
        End With
        Exit Property
    End If
Next i
' &#205;&#229; &#237;&#224;&#248;&#235;&#232; &#241;&#238;&#238;&#242;&#226;&#229;&#241;&#242;&#226;&#243;&#254;&#249;&#243;&#254; &#241;&#229;&#234;&#246;&#232;&#254;, &#228;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236; &#237;&#238;&#226;&#243;&#254;...
ReDim Preserve AllSections(UBound(AllSections) + 1)
With AllSections(UBound(AllSections))
    .Name = Section
    ReDim .Values(1)
    .Values(1).Name = ValueName
    .Values(1).cntValue = vData
End With
End Property
Public Property Get Value(ByVal Section As String, ByVal ValueName As String) As String
' &#207;&#240;&#232;&#236;&#229;&#247;&#224;&#237;&#232;&#229;: &#229;&#241;&#235;&#232; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240; &#237;&#224;&#233;&#228;&#229;&#237; &#237;&#229; &#225;&#243;&#228;&#229;&#242;, &#242;&#238; &#241;&#226;&#238;&#233;&#241;&#242;&#226;&#238;
' &#226;&#229;&#240;&#237;&#229;&#242; vbNullChar - &#241;&#232;&#236;&#226;&#238;&#235; &#241; &#237;&#243;&#235;&#229;&#226;&#251;&#236; &#234;&#238;&#228;&#238;&#236;
Dim i&, a&, uVN$, uSN$
uSN = UCase$(Section)
uVN = UCase$(ValueName)
' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#241;&#229;&#234;&#246;&#232;&#233;
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#207;&#240;&#238;&#241;&#236;&#238;&#242;&#240; &#226;&#241;&#229;&#245; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#238;&#226; &#226; &#241;&#229;&#234;&#246;&#232;&#232;
        For a = 1 To UBound(AllSections(i).Values)
            If UCase$(AllSections(i).Values(a).Name) = uVN Then
                ' &#205;&#224;&#248;&#235;&#232; &#237;&#243;&#230;&#237;&#251;&#233; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
                Value = AllSections(i).Values(a).cntValue
                Exit Property
            End If
        Next
        Value = vbNullChar
        Exit Property
    End If
Next i
Value = vbNullChar
End Property
Public Property Get SectionName(ByVal Index As Long) As String
' &#199;&#228;&#229;&#241;&#252; &#226;&#241;&#229; &#239;&#240;&#238;&#241;&#242;&#238;: &#239;&#240;&#238;&#226;&#229;&#240;&#234;&#224; - &#239;&#238;&#239;&#224;&#228;&#224;&#229;&#242; &#235;&#232; &#232;&#237;&#228;&#229;&#234;&#241; &#226; &#227;&#240;&#224;&#237;&#232;&#246;&#251;
' &#236;&#224;&#241;&#241;&#232;&#226;&#224; &#232; &#226;&#238;&#231;&#226;&#240;&#224;&#242; &#232;&#236;&#229;&#237;&#232; &#241;&#229;&#234;&#246;&#232;&#232;.
' &#207;&#240;&#232;&#236;&#229;&#247;&#224;&#237;&#232;&#229;: &#229;&#241;&#235;&#232; &#241;&#229;&#234;&#246;&#232;&#255; &#237;&#224;&#233;&#228;&#229;&#237;&#224; &#237;&#229; &#225;&#243;&#228;&#229;&#242;, &#242;&#238; &#241;&#226;&#238;&#233;&#241;&#242;&#226;&#238;
' &#226;&#229;&#240;&#237;&#229;&#242; vbNullChar - &#241;&#232;&#236;&#226;&#238;&#235; &#241; &#237;&#243;&#235;&#229;&#226;&#251;&#236; &#234;&#238;&#228;&#238;&#236;
If Index > 0 And Index <= UBound(AllSections) Then
    SectionName = AllSections(Index).Name
Else
    SectionName = vbNullChar
End If
End Property
Public Function AddSection(ByVal Section As String) As Boolean
Dim uSN$, i&
uSN = UCase$(Section)
For i = 1 To UBound(AllSections)
    If UCase$(AllSections(i).Name) = uSN Then
        ' &#211;&#230;&#229; &#242;&#224;&#234;&#224;&#255; &#241;&#229;&#234;&#246;&#232;&#255; &#229;&#241;&#242;&#252;...
        Exit Function
    End If
Next i
' &#196;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236; &#253;&#235;&#229;&#236;&#229;&#237;&#242; &#234; &#236;&#224;&#241;&#241;&#232;&#226;&#243; &#241;&#229;&#234;&#246;&#232;&#233;
ReDim Preserve AllSections(UBound(AllSections) + 1)
With AllSections(UBound(AllSections))
    .Name = Section
    ReDim .Values(0)
End With
AddSection = True
End Function
Public Property Get SectionsCount() As Long
SectionsCount = UBound(AllSections)
End Property
Public Property Let FileName(ByVal vData As String)
Dim s&, v&, l$, t&
mFilename = vData
ReDim AllSections(0)
' &#212;&#224;&#233;&#235; &#226; &#237;&#224;&#235;&#232;&#247;&#232;&#232;?
If Len(Dir(mFilename)) = 0 Then
    ' &#197;&#241;&#235;&#232; &#237;&#229;&#242;, &#242;&#238;...
    Exit Property
End If
' &#209;&#247;&#232;&#242;&#251;&#226;&#224;&#229;&#236; &#244;&#224;&#233;&#235;
Open mFilename For Input Access Read Lock Write As #1
Do While Not EOF(1)
    Line Input #1, l
    ' &#202;&#238;&#236;&#236;&#229;&#237;&#242;&#224;&#240;&#232;&#232; &#229;&#241;&#242;&#252;?
    t = InStr(1, l, ";";)
    l = LTrim$(RTrim$(l))
    ' &#206;&#242;&#234;&#238;&#236;&#236;&#229;&#237;&#242;&#232;&#240;&#238;&#226;&#224;&#237;&#224; &#226;&#241;&#255; &#241;&#242;&#240;&#238;&#234;&#224;
    If t = 1 Or Len(l) = 0 Then GoTo skip_line
    ' &#202;&#238;&#236;&#236;&#229;&#237;&#242;&#224;&#240;&#232;&#232; &#226; &#234;&#238;&#237;&#246;&#229; &#241;&#242;&#240;&#238;&#234;&#232;
    If t > 1 Then l = Left$(l, t - 1)
    If Left$(l, 1) = "[" Then
        ' &#205;&#224;&#248;&#235;&#232; &#241;&#229;&#234;&#246;&#232;&#254;
        t = InStr(1, l, "]";)
        If t < 3 Then GoTo skip_line
        l = Mid$(l, 2, t - 2)
        ' &#209;&#229;&#234;&#246;&#232;&#233; &#241;&#242;&#224;&#235;&#238; &#237;&#224; &#238;&#228;&#237;&#243; &#225;&#238;&#235;&#252;&#248;&#229;
        s = s + 1
        ' &#209;&#242;&#240;&#238;&#234; &#226; &#237;&#238;&#226;&#238;&#233; &#241;&#229;&#234;&#246;&#232;&#232; &#239;&#238;&#234;&#224; &#237;&#229;&#242;
        v = 0
        ReDim Preserve AllSections(s)
        AllSections(s).Name = l
        ReDim AllSections(s).Values(0)
    Else
        ' &#205;&#224;&#248;&#235;&#232; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240; &#226; &#241;&#229;&#234;&#246;&#232;&#254;
        ' &#197;&#241;&#235;&#232; &#240;&#224;&#237;&#229;&#229;&#229; &#237;&#229; &#225;&#251;&#235;&#238; &#237;&#224;&#233;&#228;&#229;&#237;&#238; &#237;&#232; &#238;&#228;&#237;&#238;&#233; &#241;&#229;&#234;&#246;&#232;&#232; - &#239;&#240;&#238;&#239;&#243;&#241;&#234;&#224;&#229;&#236;
        If s = 0 Then GoTo skip_line
        ' &#208;&#224;&#231;&#228;&#229;&#235;&#255;&#229;&#236; &#241;&#242;&#240;&#238;&#234;&#243; &#237;&#224; &#237;&#224;&#231;&#226;&#224;&#237;&#232;&#229; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#224; &#232; &#237;&#224; &#229;&#227;&#238; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229;
        t = InStr(1, l, "=";)
        If t < 2 Then GoTo skip_line
        v = v + 1
        ' &#196;&#238;&#225;&#224;&#226;&#235;&#255;&#229;&#236; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;
        With AllSections(s)
            ReDim Preserve .Values(v)
            .Values(v).Name = Left$(l, t - 1)
            If t < Len(l) Then .Values(v).cntValue = Mid$(l, t + 1, Len(l) - t)
        End With
    End If
skip_line:
Loop
Close #1
End Property
Public Property Get FileName() As String
FileName = mFilename
End Property
Private Sub Class_Initialize()
ReDim AllSections(0)
End Sub
Private Sub Class_Terminate()
ReDim AllSections(0)
End Sub

Ответить

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #2 Добавлено: 03.09.08 12:44
блин... копипаст не рулит....

Ответить

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #3 Добавлено: 03.09.08 12:47
http://albusfalco.narod.ru/temp/clsINI.cls
в общем - вот он.
а для реестра - SaveSetting и GetSetting

Ответить

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



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 04.09.08 00:40
А не проще юзать апи GetPrivateProfileString, SetPrivateProfileString и т.п. Этот класс, насколько я помню, не записывает комментарии в измененный файл.

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 04.09.08 07:04
Вообще-то для работы с INI есть готовые АПИ-функции, этот класс - костыли какие-то непонятные.

А вообще лучше писать в реестр, ибо если используешь INI, то кроме того чтоб знать КАК писать, нужно еще и знать КУДА, а с этим у многих возникают проблемы.

Ответить

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



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #6 Добавлено: 04.09.08 08:26
Зато INI легче перетащить на другой комп. Не надо лезть в регедит и экспортировать ветку и т.д.

Ответить

Страница: 1 |

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



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