Results 1 to 6 of 6

Thread: Registry vs Ini

  1. #1

    Thread Starter
    Fanatic Member Gary.Lowe's Avatar
    Join Date
    May 2000
    Location
    In my sphere of influence
    Posts
    621
    Does anybody have any views on using the registry as opposed to an ini file to store and retrieve information.

    Also does anybody have exmple code of setting values in the registry and then retrieving them
    Gary Lowe
    VB6 (Enterprise) SP5
    ADO 2.6
    SQL Server 7 SP3

    OK I know my spelling and grammer is crap so don't quote me on it!

    To err is human to take the P! is only natural !!

    Click on the top section of image for Marcus Miller website and bottom section of image for 'Run For Cover' sound clip


  2. #2
    Lively Member
    Join Date
    Mar 2000
    Posts
    81
    It really depends on what you're doing and who's using your app - take, for example, an app being built for use in a company. Most of the time I'd use an ini because you can ship a standard ini with it and the app will work nicely straight away, plus users/administrators can copy the ini from one machine to another very easily. Support is easier because you just have to edit a flat file, which (pretty much) anyone can do. If, however, you're making an app that is intended for single-users on a single machine (say, a card game), then it's much neater to use the registry and the user won't notice any difference anyway.

    For registry code, take a look at the Tips or search for "RegOpenKey".

    HTH,
    Toot
    Some cause happiness wherever they go; others, whenever they go.

  3. #3

    Thread Starter
    Fanatic Member Gary.Lowe's Avatar
    Join Date
    May 2000
    Location
    In my sphere of influence
    Posts
    621
    Thanks Toot
    Gary Lowe
    VB6 (Enterprise) SP5
    ADO 2.6
    SQL Server 7 SP3

    OK I know my spelling and grammer is crap so don't quote me on it!

    To err is human to take the P! is only natural !!

    Click on the top section of image for Marcus Miller website and bottom section of image for 'Run For Cover' sound clip


  4. #4
    transcendental analytic kedaman's Avatar
    Join Date
    Mar 2000
    Location
    0x002F2EA8
    Posts
    7,221
    Ini files as Toot said are portable as you can copy your app to another comp, but that depends, if youre not making a freeware app then you could store all configurations in registry as well.

    For accessing registry just download my Registry module from my homepage...
    USe the regval property for returning and setting values:
    Code:
    'for returning value
    temp= regval("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SystemRoot")
    'for setting value
    regval("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SystemRoot")=temp
    Use
    writing software in C++ is like driving rivets into steel beam with a toothpick.
    writing haskell makes your life easier:
    reverse (p (6*9)) where p x|x==0=""|True=chr (48+z): p y where (y,z)=divMod x 13
    To throw away OOP for low level languages is myopia, to keep OOP is hyperopia. To throw away OOP for a high level language is insight.

  5. #5
    Former Admin/Moderator MartinLiss's Avatar
    Join Date
    Sep 1999
    Location
    San Jose, CA
    Posts
    33,431
    You should use the registry all the time. It's very easy to use and you can learn more about it by clicking the Registry link in the Topic Areas list that you see in the upper left-hand corner of the screen.

  6. #6
    Guest
    Here is a small code to access the Registry. the functions GetSetting and SaveSetting will retrieve and save Registry Values.

    Code:
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As Long, ByVal lpSubKey As String) As Long
    Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String) As Long
    Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    
    Function RegQueryStringValue(ByVal hkey As Long, ByVal strValueName As String)
        
        Dim lResult As Long
        Dim lValueType As Long
        Dim strBuf As String
        Dim lDataBufSize As Long
        
        On Error GoTo 0
        lResult = RegQueryValueEx(hkey, strValueName, 0&, lValueType, ByVal 0&, lDataBufSize)
        If lResult = ERROR_SUCCESS Then
            If lValueType = REG_SZ Then
                strBuf = String(lDataBufSize, " ")
                lResult = RegQueryValueEx(hkey, strValueName, 0&, 0&, ByVal strBuf, lDataBufSize)
                If lResult = ERROR_SUCCESS Then
                    RegQueryStringValue = StripTerminator(strBuf)
                End If
            End If
        End If
        
    End Function
    
    Public Function GetString(hkey As Long, strpath As String, strvalue As String)
    
        Dim keyhand&
        Dim datatype&
        r = RegOpenKey(hkey, strpath, keyhand&)
        GetString = RegQueryStringValue(keyhand&, strvalue)
        r = RegCloseKey(keyhand&)
    
    End Function
    
    Function StripTerminator(ByVal strString As String) As String
        Dim intZeroPos As Integer
    
        intZeroPos = InStr(strString, Chr$(0))
        If intZeroPos > 0 Then
            StripTerminator = Left$(strString, intZeroPos - 1)
        Else
            StripTerminator = strString
        End If
    End Function
    
    Public Sub savestring(hkey As Long, strpath As String, strvalue As String, strdata As String)
    
        Dim keyhand&
        r = RegCreateKey(hkey, strpath, keyhand&)
        r = RegSetValueEx(keyhand&, strvalue, 0, REG_SZ, ByVal strdata, Len(strdata))
        r = RegCloseKey(keyhand&)
    
    End Sub

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width