Ejemplo que utiliza las funciones Api GetPrivateProfileString y WritePrivateProfileString para grabar y leer datos en un archivo de configuración ini
La función que lee es GetPrivateProfileString, la función que graba WritePrivateProfileString.
Las dos poeen casi los mismos parámetros: ( La ruta y nombre del archivo Ini, el nombre de La clave a leer o grabar, el Valor que se va a leer o grabar.)
Nota: La función GetPrivateProfileString, tiene un parámetro adicional ( ByVal lpDefault As String ) para los valores por defecto en caso de que no haya ningún dato que leer.
El siguiente ejemplo lo que hace es leer y almacenar en un archivo Ini ( ubicado en el App.Path del programa y llamado Config.ini), ..el ancho, alto, el Top y el Left del formulario.
En el evento FormLoad, se llama a la función de ajuste llamada Leer_Ini (Esta función retorna el valor leido )
Private Function Leer_Ini(Path_INI As String, Key As String, Default As Variant) As String
..en el evento Unload del formulario se llama a la función Grabar_Ini.
Private Function Grabar_Ini(Path_INI As String, Key As
String, Valor As Variant) As String
String, Valor As Variant) As String
En el fichero Ini se almacenarán los datos de esta forma:
[MiPrograma]
Left=0
Top=0
Width=12165
Height=5000
Left=0
Top=0
Width=12165
Height=5000
Nota: Si el archivo ini no existe, la función api WritePrivateProfileString, lo crea automáticamente, o sea que no generará error de Acceso o ruta de archivo inexistente
Código fuente en el formulario
Option Explicit
Const APPLICATION As String = "MiPrograma"
Dim m_Left As Single
Dim m_Top As Single
Dim m_Width As Single
Dim m_Height As Single
Dim Path_Archivo_Ini As String
'Función api que recupera un valor-dato de un archivo Ini
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String,ByVal lpKeyName As String, _
ByVal lpDefault As String,ByVal lpReturnedString As String, _
ByVal nSize As Long,ByVal lpFileName As String) As Long
'Función api que Escribe un valor - dato en un archivo Ini
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String,ByVal lpKeyName As String, _
ByVal lpString As String,ByVal lpFileName As String) As Long
'Lee un dato _
-----------------------------
'Recibe la ruta del archivo, la clave a leer y _
el valor por defecto en caso de que la Key no exista
Private Function Leer_Ini(Path_INI As String, Key As String, Default As Variant) As String
Dim bufer As String * 256
Dim Len_Value As Long
Len_Value = GetPrivateProfileString(APPLICATION,Key, _
Default,bufer,Len(bufer),Path_INI)
Leer_Ini = Left$(bufer, Len_Value)
End Function
'Escribe un dato en el INI _
-----------------------------
'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave
Private Function Grabar_Ini(Path_INI As String, Key As String, Valor As Variant) As String
WritePrivateProfileString APPLICATION,Key,Valor,Path_INI
End Function
Private Sub Form_Load()
'Path del fichero Ini
Path_Archivo_Ini = App.Path & "\config.ini"
' Lee las Key y Les envia el valor por defecto por si no existe
m_Left = Leer_Ini(Path_Archivo_Ini, "Left", 0)
m_Top = Leer_Ini(Path_Archivo_Ini, "Top", 0)
m_Width = Leer_Ini(Path_Archivo_Ini, "Width", 5000)
m_Height = Leer_Ini(Path_Archivo_Ini, "Height", 5000)
'Posiciona el formulario con los valores del archivo Ini
Move m_Left, m_Top, m_Width, m_Height
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Escribe en el archivo Ini
'Posición del Form
Call Grabar_Ini(Path_Archivo_Ini, "Left", Me.Left)
Call Grabar_Ini(Path_Archivo_Ini, "Top", Me.Top)
'Tamaño del formulario
Call Grabar_Ini(Path_Archivo_Ini, "Width", Me.Width)
Call Grabar_Ini(Path_Archivo_Ini, "Height", Me.Height)
End Sub
Const APPLICATION As String = "MiPrograma"
Dim m_Left As Single
Dim m_Top As Single
Dim m_Width As Single
Dim m_Height As Single
Dim Path_Archivo_Ini As String
'Función api que recupera un valor-dato de un archivo Ini
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String,ByVal lpKeyName As String, _
ByVal lpDefault As String,ByVal lpReturnedString As String, _
ByVal nSize As Long,ByVal lpFileName As String) As Long
'Función api que Escribe un valor - dato en un archivo Ini
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String,ByVal lpKeyName As String, _
ByVal lpString As String,ByVal lpFileName As String) As Long
'Lee un dato _
-----------------------------
'Recibe la ruta del archivo, la clave a leer y _
el valor por defecto en caso de que la Key no exista
Private Function Leer_Ini(Path_INI As String, Key As String, Default As Variant) As String
Dim bufer As String * 256
Dim Len_Value As Long
Len_Value = GetPrivateProfileString(APPLICATION,Key, _
Default,bufer,Len(bufer),Path_INI)
Leer_Ini = Left$(bufer, Len_Value)
End Function
'Escribe un dato en el INI _
-----------------------------
'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave
Private Function Grabar_Ini(Path_INI As String, Key As String, Valor As Variant) As String
WritePrivateProfileString APPLICATION,Key,Valor,Path_INI
End Function
Private Sub Form_Load()
'Path del fichero Ini
Path_Archivo_Ini = App.Path & "\config.ini"
' Lee las Key y Les envia el valor por defecto por si no existe
m_Left = Leer_Ini(Path_Archivo_Ini, "Left", 0)
m_Top = Leer_Ini(Path_Archivo_Ini, "Top", 0)
m_Width = Leer_Ini(Path_Archivo_Ini, "Width", 5000)
m_Height = Leer_Ini(Path_Archivo_Ini, "Height", 5000)
'Posiciona el formulario con los valores del archivo Ini
Move m_Left, m_Top, m_Width, m_Height
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Escribe en el archivo Ini
'Posición del Form
Call Grabar_Ini(Path_Archivo_Ini, "Left", Me.Left)
Call Grabar_Ini(Path_Archivo_Ini, "Top", Me.Top)
'Tamaño del formulario
Call Grabar_Ini(Path_Archivo_Ini, "Width", Me.Width)
Call Grabar_Ini(Path_Archivo_Ini, "Height", Me.Height)
End Sub
hola amigo disculpa el abuso yo no soy programador pero me gusta el asunto y tengo un problema yo hice una aplicacion cliente servidor que funciona de maravilla en vb6 y ahora lo tengo en vb 2008 yo en la version 6 le puse por llamrlos de alguna manera comandos para que el usuario final pudiera cambiar los colores font y todo lo que pudiera para que cuando el usuario volviera a abrir el programa toda esa configuracion se mateniera pero ahora que lo tengo en vb2008 ese codigo que use no me sirve para nada y en verdad e visto reeeeeevisto tanto que cada vez que leo algo nuevo entiendo menos ya que las personas que ponen los ejemplos explican muy pero muy poco como es el funcionamiento mira no se si pudieras darme una mano o por lo menos encaminarme en el asunto te dejo el codigo que usaba en vb6 para que tengas una idea como lo hacia :
ResponderEliminarPrivate Sub GuardarColores()
' Guarda los Colores de la configuración (Suponiendo que es un Text multiline)
Dim nFichero As Integer
nFichero = FreeFile
Open App.Path & "\Colores.cfg" For Output As #nFichero
Print #nFichero, Text1.ForeColor
Print #nFichero, Text1.BackColor
Close #nFichero
End Sub
Private Sub CargarColores()
' Carga los Colores de la configuración (Suponiendo que es un Text multiline)
Dim nFichero As Integer, nColor As Single
On Error Resume Next
nFichero = FreeFile
Open App.Path & "\Colores.cfg" For Input As #nFichero
Input #nFichero, nColor: Text1.ForeColor = nColor
Input #nFichero, nColor: Text1.BackColor = nColor
Close #nFichero
End Sub