Ver Mensaje Individual
  #3 (permalink)  
Antiguo 31/12/2009, 04:59
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Guardar configuracion de app...

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
  1. #If Win32 Then
  2.     'Declaraciones para 32 bits
  3.    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
  4.         (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
  5.          ByVal lpDefault As String, ByVal lpReturnedString As String, _
  6.          ByVal nSize As Long, ByVal lpFileName As String) As Long
  7.     Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
  8.         (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
  9.          ByVal lpString As Any, ByVal lpFileName As String) As Long
  10. #Else
  11.     'Declaraciones para 16 bits
  12.    Private Declare Function GetPrivateProfileString Lib "Kernel" _
  13.         (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
  14.          ByVal lpDefault As String, ByVal lpReturnedString As String, _
  15.          ByVal nSize As Integer, ByVal lpFileName As String) As Integer
  16.     Private Declare Function WritePrivateProfileString Lib "Kernel" _
  17.         (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
  18.          ByVal lpString As Any, ByVal lplFileName As String) As Integer
  19. #End If
  20.  
  21. Sub GuardarIni(ByVal FicheroINI As String, ByVal Seccion As String, _
  22. ByVal Clave As String, ByVal Valor As String)
  23.   On Local Error GoTo ErrorGuardarIni
  24.   WritePrivateProfileString Seccion, Clave, Valor, FicheroINI
  25.   Exit Sub
  26. ErrorGuardarIni:
  27.   MsgBox Err.Number & ". " & Err.Description, vbCritical
  28.   Err.Clear
  29. End Sub
  30.  
  31. '------------------------------------
  32.  
  33. Function LeerIni(ByVal FicheroINI As String, ByVal Seccion As String, _
  34. ByVal Clave As String, Optional ByVal ValorDefault As String) As String
  35.   Dim lpString As String
  36.   Dim LTmp As Long
  37.   Dim sRetVal As String
  38.   On Local Error GoTo ErrorLeerIni
  39.   If IsMissing(ValorDefault) Then
  40.     lpString = ""
  41.   Else
  42.     lpString = ValorDefault
  43.   End If
  44.   sRetVal = String$(255, 0)
  45.   LTmp = GetPrivateProfileString(Seccion, Clave, _
  46.   lpString, sRetVal, Len(sRetVal), FicheroINI)
  47.   If LTmp = 0 Then
  48.     LeerIni = lpString
  49.   Else
  50.     LeerIni = Left(sRetVal, LTmp)
  51.   End If
  52.   Exit Function
  53. ErrorLeerIni:
  54.   MsgBox Err.Number & ". " & Err.Description, vbCritical
  55.   Err.Clear
  56. End Function

Ejemplo para guardar y leer el alto y ancho del form1:

Código vb:
Ver original
  1. '               fichero       seccion    clave   valor a guardar
  2.  GuardarIni "C:\Config.ini", "Ventanas", "F1Alto", Form1.Height
  3.   GuardarIni "C:\Config.ini", "Ventanas", "F1Ancho", Form1.Width

En el fichero ini se guardaría:

Código :
Ver original
  1. [Ventanas]
  2. F1Alto=3500
  3. F1Ancho=4200

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
  1. '                                fichero     seccion    clave   valor por defecto
  2.  Form1.Height = LeerIni ("C:\Config.ini", "Ventanas", "F1Alto", Form1.Height)
  3.   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 original
  1. Fichero = App.Path & "\Config.ini"
  2.   Seccion = "Ventanas"
  3.   Clave = "F1Titulo"
  4.   Valor = Form1.Caption
  5.   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
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 27/03/2010 a las 17:28 Razón: Modificar declaraciones para evitar posibles errores de uso