Hola Gente del Foro en vista de lo que alguien Pide mas abajo subo este code que hice cuando empece a programas hace unos años por eso esta medio des prolijo :P pero es muy funcional...
Option Explicit
'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
Private Const CODENL = "<?%!-/#¿>"
Public Function Leer_Ini(Key As String, Default As Variant, Optional Aplicacion As String, Optional Path_INI As String) As String
Dim Aplicacion_Ini As String
Dim Path__Ini As String
If Aplicacion = "" Then
Aplicacion_Ini = "INI-EXAMPLE" 'Nombre de la INI
Else
Aplicacion_Ini = Aplicacion
End If
If Path_INI = "" Then
Path__Ini = "C:\Archivo_INI" 'Path De la INI
Else
Path__Ini = Path_INI
End If
Dim bufer As String * 256
Dim Len_Value As Long
Len_Value = GetPrivateProfileString(Aplicacion_Ini, Key, Default, bufer, Len(bufer), Path__Ini)
Leer_Ini = Left$(bufer, Len_Value)
Leer_Ini = Replace(Leer_Ini, CODENL, vbNewLine)
End Function
Public Function Grabar_Ini(Key As String, Valor As Variant, Optional Aplicacion As String, Optional Path_INI As String) As String
Dim Aplicacion_Ini As String
Dim Path__Ini As String
If Aplicacion = "" Then
Aplicacion_Ini = "INI-EXAMPLE" 'Nombre de la INI
Else
Aplicacion_Ini = Aplicacion
End If
If Path_INI = "" Then
Path__Ini = "C:\Archivo_INI" 'Path De la INI
Else
Path__Ini = Path_INI
End If
Valor = Replace(Valor, vbNewLine, CODENL)
WritePrivateProfileString Aplicacion_Ini, Key, Valor, Path__Ini
End Function
Deje la variable "Path__INI" al igual que "Aplicacion_INI" en la función por que por lo general cuando yo uso las INI uso un solo "Nombre de aplicación" y una sola ubicación que por lo general es una variable del entorno así que es mas cómodo.
Ademas remplazo los "Saltos de linea(vbNewLine)" por el codigo "<?%!-/#¿>" para hacer asi compatible a la INI con multilinea
si no les gusta modifiquen lo como quieran. espero que a alguien le sirva. Gracias
Y si quiero poner "<?%!-/#¿>" en mi texto? :laugh: :laugh:, nah, solo lo pondria por joder :P
Buen aporte, yo hice uno similar, pero trabajando directamente con el archivo y manejando yo los tags, sin APIs...
No me gusta eso de que si no pones nada lo elija la funcion, creo que deberia devolver False y punto... Añades codigo innecesario...
Hay 2 apis nativas @NTDLL para hacer lo mismo :-*
HOLA!!!
Pregunta de ignorante, que diferencia tengo en guardar las variables en un *.ini a un archivo de texto plano que no sea *.ini .
Por que yo, en mis programas me manejo con un archivo de texto variables.hip en el cual mediante el index del item me doy cuenta que variable es (leo mediante input).
GRACIAS POR LEER!!!
@Karcrack: si queres poner "<?%!-/#¿>" en tu variable cabias la constante code por ""<?%!-||||||||||||||||||||||||||||||||||||||||||||||||/#¿>" y listo :P Jaja
Jajaja me parece que lo vi al tuyo. era "mConfig". NO? esta bueno.
@F3B14N: Mira vos.. No sabia. Después lo busco. Gracias!!
@79137913: Creo que ninguna no se, depende tu code, cada uno use el que mas le guste jajaja
Cita de: F3B14N en 24 Noviembre 2010, 16:39 PM
Hay 2 apis nativas @NTDLL para hacer lo mismo :-*
Podrias poner aun que sea el nombre de dichas APIS... espero que te refieras a las que permitan multilinea... no lo creo pero bueno xP
Dulces Lunas!¡.