Autor
|
Tema: Clase Ini totalmente funcional. (source) (Leído 2,839 veces)
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
buenas a todos los foreros Les traigo una clase dedicada a leer y guardar en archivos .ini bueno aki el code de la clase: 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 '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 Public Function Leer_Ini(Path_INI As String,Section as String, Key As String, Default As Variant) As String Dim bufer As String * 256 Dim Len_Value As Long Len_Value = GetPrivateProfileString(Section, 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 Public Function Grabar_Ini(Path_INI As String,Section as string, Key As String, Valor As Variant) As String WritePrivateProfileString Secition, Key, Valor, Path_INI End Function
Para el formato del archivo ini se debe manejar asi: [sección] CLAVE1=VALOR CLAVE2=VALOR ........ y para llamar a la funcion para leer el ini es: ClaseIni.Leer_Ini("Dir del archivo ini","Sistema","CLAVE a leer","un Valor Default sino existe tal valor en el ini o 0")
para guardar: Claseini.Grabar_Ini("Dir del archivo ini","Config","Clave donde guardar el valor","Valor a guardar")
Nota: Los nombres mostrados anteriormente antes de llarmar a la funcion es el nombre de la clase para una mejor compresion de esto miremos un ejemplo: Vamoss a llamara a la clase por un valor del ini dada una configuracion: variable=ClaseIni.leer_Ini("C:\windows","Config",1001,0) variable=ClaseIni.leer_Ini("C:\windows","Window","NOOPEN","Holas") Y para guardar: ClaseIni.Grabar_Ini("C:\windows","Config",1001,1) ClaseIni.Grabar_Ini("C:\windows","Window","NOOPEN","YES")
|
|
« Última modificación: 27 Mayo 2008, 17:56 pm por Zeroql »
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
cobein
|
@ Zeroql
Esto esta mal, la estructura del ini es sección, Clave, valor.
[sección] CLAVE1=VALOR
en ese codigo tenes la sección como una constante :S
Edit: me retracto de lo anteriormente dicho, no esta mal puesto que es funcional, pero no esta bien implementado.
|
|
« Última modificación: 25 Mayo 2008, 17:47 pm por cobein »
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
UMMM puede ser, pero dejemoslo asi para los novatos. al fin y acabo que esta pensada para ellos.
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
naderST
|
La mejor clase para los ini que he visto y usado es la de Cobein k por cierto Cobein deberias postearla aca
|
|
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
puede ser cobein posteala en aca para comparar y que los demas se escojan cual les parece mejor no te parece?
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
seba123neo
|
@ Cobein
me parece que es solo un modulo normal,¿¿es la que usabamos en los widget??,pues bueno si es esa,funciona perfecto..
saludos.
|
|
|
En línea
|
|
|
|
Kizar
Desconectado
Mensajes: 1.325
kizar_net
|
Lo he adaptado a mi manera: 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
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 iSection As String Private iPath As String
Public Sub Set_Path(sPath As String) iPath = sPath End Sub
Public Sub Set_Section(sSection As String) iSection = sSection End Sub
Public Function Leer_Ini(key As String) As String Dim sBuffer As String * 256, lenValue As Long lenValue = GetPrivateProfileString(iSection, key, "", sBuffer, Len(sBuffer), iPath) Leer_Ini = Left(sBuffer, lenValue) End Function Public Function Grabar_Ini(key As String, valor As Variant) As String WritePrivateProfileString iSection, key, valor, iPath End Function
|
|
« Última modificación: 25 Mayo 2008, 20:54 pm por Kizar »
|
En línea
|
|
|
|
SKL (orignal)
Desconectado
Mensajes: 259
UpLoadSourceCode
|
anda a saber donde debe andar cobein jaja
aca les dejo la clase ini:http://www.uploadsourcecode.com.ar/d/gIgNKU7hqdXrTmUFV59HGUGruP5FeQb2
saludos
|
|
|
En línea
|
|
|
|
cobein
|
A ver, no nos saquemos los ojos, lo mio fuo una critia u observacion nada mas, hice una critica con su respectiva justificacion para que si el considera que es valedera corrija el code y aprenda de ello, nada mas, esto no es una competencia de nada, personalmente valoro su aporte.
Con respecto a lo que decian, el modulo que hice NO es mejor que nada, es simple y esta incompleto, es solamente lo que necesitaba, no tiene enumeracion ni muchas cosas mas que tendria que tener para ser considerado siquiera COMPLETO.
|
|
|
En línea
|
|
|
|
Zeroql
Desconectado
Mensajes: 957
Todo lo k sucede sucede por una razon
|
Ya he modificado la clase gracias a la observacion de Cobein. ya veran uds si les agrada o no, a mi me parece que esta muy completa y es algo pequeña. bueno al fin y al cabo el foro es para ayudar y opinar sobre los post. al que le sirva bien. y por sirto Kizar te muy kedo bien la modificacion.
|
|
|
En línea
|
Dime y lo olvido, enseñame y lo recuerdo, involucrame y lo aprendo. /.-ZEROQL.-\ ----- #937675#
|
|
|
|
|