Para facilitar las cosas os paso el código que uso yo para guardar y leer de ficheros ini.
Hay en las faqs algo sobre esto pero no queda demasiado claro.
Código vb:
Ver original#If Win32 Then
'Declaraciones para 32 bits
Private 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
Private 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
#Else
'Declaraciones para 16 bits
Private Declare Function GetPrivateProfileString Lib "Kernel" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
ByVal lpDefault As String, ByVal lpReturnedString As String, _
ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Private Declare Function WritePrivateProfileString Lib "Kernel" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
ByVal lpString As Any, ByVal lplFileName As String) As Integer
#End If
Sub GuardarIni(ByVal FicheroINI As String, ByVal Seccion As String, _
ByVal Clave As String, ByVal Valor As String)
On Local Error GoTo ErrorGuardarIni
WritePrivateProfileString Seccion, Clave, Valor, FicheroINI
Exit Sub
ErrorGuardarIni:
MsgBox Err.Number & ". " & Err.Description, vbCritical
Err.Clear
End Sub
'------------------------------------
Function LeerIni(ByVal FicheroINI As String, ByVal Seccion As String, _
ByVal Clave As String, Optional ByVal ValorDefault As String) As String
Dim lpString As String
Dim LTmp As Long
Dim sRetVal As String
On Local Error GoTo ErrorLeerIni
If IsMissing(ValorDefault) Then
lpString = ""
Else
lpString = ValorDefault
End If
sRetVal = String$(255, 0)
LTmp = GetPrivateProfileString(Seccion, Clave, _
lpString, sRetVal, Len(sRetVal), FicheroINI)
If LTmp = 0 Then
LeerIni = lpString
Else
LeerIni = Left(sRetVal, LTmp)
End If
Exit Function
ErrorLeerIni:
MsgBox Err.Number & ". " & Err.Description, vbCritical
Err.Clear
End Function
Ejemplo para guardar y leer el alto y ancho del form1:
Código vb:
Ver original' fichero seccion clave valor a guardar
GuardarIni "C:\Config.ini", "Ventanas", "F1Alto", Form1.Height
GuardarIni "C:\Config.ini", "Ventanas", "F1Ancho", Form1.Width
En el fichero ini se guardaría:
El fichero ini se crea automáticamente al guardar un dato en el.
Para devolver su tamaño a la ventana pondríamos:
Código vb:
Ver original' fichero seccion clave valor por defecto
Form1.Height = LeerIni ("C:\Config.ini", "Ventanas", "F1Alto", Form1.Height)
Form1.Width = LeerIni ("C:\Config.ini", "Ventanas", "F1Ancho", Form1.Width)
Como veis, pongo como valores por defecto el actual ancho y alto de la ventana, de modo que si no existen valores guardados en el fichero .INI, dejamos la ventana con su tamaño original.
Como muchos sabrán, todos los valores se pueden poner como variables o textuamente como he hecho yo, además de que se pueden guardar textos, no solo valores numéricos:
Ejm:
Código vb:
Ver originalFichero = App.Path & "\Config.ini"
Seccion = "Ventanas"
Clave = "F1Titulo"
Valor = Form1.Caption
GuardarIni Fichero, Seccion, Clave, Valor
Espero que esto anime a muchos a usar este tipo de ficheros tan cómodos. Una vez que tienes las 2 funciones, guardar y leer datos es muy simple, y al ser un fichero de texto se puede editar fácilmente con el bloc de notas de windows.
Saludos