la codeteca
Compartir:

Cambiar el fichero .ini (win)

'Esta funcion la encontre cuando necesitaba validar ciertos parametros de 
'manera externa y antes de ejecutar mi sistema. Ahora cada uno le puede 'dar el uso que mas le convenga. No recuerdo exactamente 
'donde la encontre pero aclaro que fue asi, no la hago de mi propiedad.

'En un modulo Bas ponemos el siguiente codigo


'Declaración de las funciones API's para escribir y leer archivos INI.
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
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

'Función para leer los datos en archivos INI:
Public Function INI_Read(Filename As String, Key_Value As String, Key_Name As String, Optional ByVal Default As String) As String
'On Error GoTo ErrOut
Dim Size As Integer
Dim value As String

'Comprobamos que el archivo existe.
If Not SYS_FileExists(Filename) Then Err.Raise 53

'Se define el tamaño maximo de caracteres
'que podra tener la variable Value
value = Space(200)
'Se utiliza la función para obtener
'el valor de la clave
Size = GetPrivateProfileString(Key_Value, Key_Name, "", value, Len(value), Filename)
'Si el tamaño es mayor a -1 entonces
'se ha encontrado el valor de la clave
If Size > 0 Then
value = Left$(value, Size)
Else
INI_Read = Default
End If

'Devolver el dato...
'Verificar que el dato no sea nulo,
'en caso de ser nulo de se devuelve
'el valor por defecto (Default)
If Len(value) Then
INI_Read = value
Else
INI_Read = Default
End If
Exit Function

ErrOut:
INI_Read = Default
End Function

'Función para escrbir datos en archivos INI.
Public Function INI_Write(Filename As String, Key_Value As String, Key_Name As String, value As String) As Long
'On Error GoTo ErrOut
Dim Size As Integer

'Escribimos el valor de la clave en el INI
Size = WritePrivateProfileString(Key_Value, Key_Name, value, Filename)
INI_Write = 1
Exit Function

ErrOut:
INI_Write = 0
End Function