VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Reads INI file and Stores the Values as an array.

by Dny/Ken (1 Submission)
Category: Files/File Controls/Input/Output
Compatability: Visual Basic 5.0
Difficulty: Unknown Difficulty
Originally Published: Tue 23rd January 2001
Date Added: Mon 8th February 2021
Rating: (1 Votes)

Reads INI file and Stores the Values as an array.

Rate Reads INI file and Stores the Values as an array.



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

************

Public Function Read_INIFile(ls_strINIFile As String) As Variant
    On Error GoTo ESR
    Dim ll_Ret As Long
    Dim ls_iniInfo As String
    Dim ls_strTempINI  As String * 128 ' Data Collector DSN
    Dim ls_INIConstant As String
    Dim ls_INIValue As String
    Dim ls_INIChar As String
    Dim ls_sINIVal As String
    Dim lb_pass1 As Boolean
    Dim li_i As Integer
    
    'Initialize all the Variables used in this function
    
    lb_pass1 = True
    ls_INIValue = Space$(128)
    ls_strTempINI = Space$(128)
    
    'ReDim the Array
    
    ReDim gv_ini_file_array(1, 0)
   
    ' Open the Input File for Reading each line
    
    Open ls_strINIFile For Input Access Read As #1
    
    'Fetch each line till the end of File
    
    Do While Not EOF(1)
        Input #1, ls_iniInfo
        ls_INIChar = Mid(ls_iniInfo, 1, 1)
        
        ' Check if the Char is a start of a Header Token "["
        
        If ls_INIChar = "[" Then
            ls_INIConstant = Mid(ls_iniInfo, 2, Len(ls_iniInfo) - 2)
        'ElseIf INIChar <> " " And INIChar <> ";" Then
        ElseIf ls_INIChar <> " " And ls_INIChar <> ";" And Len(Trim(ls_INIChar)) <> 0 Then
            ls_INIValue = ""
            ls_strTempINI = ""
            ls_INIValue = Mid(ls_iniInfo, 1, InStr(1, ls_iniInfo, "=") - 1)
            ll_Ret = GetPrivateProfileString("" + ls_INIConstant + "", "" + ls_INIValue + "", "-1", ls_strTempINI, 128, ls_strINIFile)
            If Left$(ls_strTempINI, 2) = "-1" Then
                ls_strTempINI = ""
                Exit Function
            End If
            
            If Not lb_pass1 Then
                ReDim Preserve gv_ini_file_array(1, UBound(gv_ini_file_array, 2) + 1)
            End If
            gv_ini_file_array(0, li_i) = ls_INIValue
            gv_ini_file_array(1, li_i) = Mid$(Trim(ls_strTempINI), 1, Len(Trim(ls_strTempINI)) - 1)
            lb_pass1 = False
            li_i = li_i + 1
        End If
    Loop
    
    'Assign the loaded array back to the function to return it as a variant
    
    Read_INIFile = gv_ini_file_array()
    
    Exit Function
    
' Error Routine to be called

ESR:
    Debug.Print Err.Description
    Debug.Print Err.Number
End Function

***************Put this Code in a CLASS MODULE*************

Public Sub write_log(ls_str As String, ls_filename As String)
Dim ls_fdir As String
Dim ls_filedir As String
Dim ls_tempdir As String
Dim ls_tempname As String
Dim li_cnt As Integer

'Initialize all the variables
li_cnt = 1

'Get the Current Directory and the file

Do While li_cnt > 0
    li_cnt = InStr(1, ls_filename, "\")
    If li_cnt > 0 Then
        ls_tempdir = Mid(ls_filename, 1, InStr(1, ls_filename, "\"))
        ls_filename = Mid(ls_filename, Len(ls_tempdir) + 1)
        ls_filedir = ls_filedir + ls_tempdir
    End If
Loop
    ls_filedir = Left(ls_filedir, Len(ls_filedir) - 1)
    ls_filename = ls_filedir + "\" + ls_filename

On Error Resume Next
    ls_fdir = Dir(ls_filedir, vbDirectory)
    If Len(ls_fdir) = 0 Then
        MkDir (ls_filedir)
    End If
    Open ls_filename For Append Access Write As #1
    Write #1, ls_str
    Close #1
End Sub

************
Public Function get_val_from_ini(ls_cmp_val As String) As String

'Define Local variables

Dim ll_str_cmp As Long
Dim ll_i As Long

On Error GoTo ERR_GET_VAL

'Get the Error and do a Search and returns a string whole array

    For ll_i = 0 To UBound(gv_ini_file_array, 2) + 1
        ' String compare each array element
        ll_str_cmp = StrComp(gv_ini_file_array(0, ll_i), ls_cmp_val)  ' Returns 0 if success
        If (ll_str_cmp = 0) Then
            get_val_from_ini = gv_ini_file_array(1, ll_i)
        Exit Function
        Else
            get_val_from_ini = ll_str_cmp
        End If
   Next ll_i
   
ERR_GET_VAL:
   Debug.Print Err.Description
   Debug.Print Err.Number
   
   get_val_from_ini = "ERROR # IN EXTRACT in INI FILE: " & Str(Err.Number)
   On Error Resume Next

End Function

************

Public Function write_debug_Info(ls_strDbg_Lvl As String, ls_input_str As String) As Long
    On Error GoTo ESR
    
    Dim ls_dbg_level As String
    Dim ls_dbg_file_nm As String
          
    ' Get the values from the Array of INI file.
    
    ls_dbg_level = get_val_from_ini("DEBUG_LEVEL")
    ls_dbg_file_nm = get_val_from_ini("DEBUG_LOG_FILE")
       
    If ls_strDbg_Lvl <= ls_dbg_level Then
      Call write_log(ls_input_str, ls_dbg_file_nm)
    End If
    write_debug_Info = 0
    Exit Function
ESR:
    write_debug_Info = 1
End Function

************
Public Function read_ini(ls_strINIFile As String) As Variant
    Read_INIFile (ls_strINIFile)
End Function

Download this snippet    Add to My Saved Code

Reads INI file and Stores the Values as an array. Comments

No comments have been posted about Reads INI file and Stores the Values as an array.. Why not be the first to post a comment about Reads INI file and Stores the Values as an array..

Post your comment

Subject:
Message:
0/1000 characters