Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Zeroql en 25 Mayo 2008, 17:23 pm



Título: Clase Ini totalmente funcional. (source)
Publicado por: Zeroql en 25 Mayo 2008, 17:23 pm
buenas a todos los foreros
Les traigo una clase dedicada a leer y guardar en archivos .ini
bueno aki el code de la clase:

Código
  1. Option Explicit
  2.  
  3. 'Función api que recupera un valor-dato de un archivo Ini
  4. Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
  5.  ByVal lpApplicationName As String, _
  6.  ByVal lpKeyName As String, _
  7.  ByVal lpDefault As String, _
  8.  ByVal lpReturnedString As String, _
  9.  ByVal nSize As Long, _
  10.  ByVal lpFileName As String) As Long
  11.  
  12. 'Función api que Escribe un valor - dato en un archivo Ini
  13. Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
  14.  ByVal lpApplicationName As String, _
  15.  ByVal lpKeyName As String, _
  16.  ByVal lpString As String, _
  17.  ByVal lpFileName As String) As Long
  18.  
  19. 'Lee un dato _
  20. -----------------------------
  21. 'Recibe la ruta del archivo, la clave a leer y _
  22.  el valor por defecto en caso de que la Key no exista
  23.  
  24. Public Function Leer_Ini(Path_INI As String,Section as String, Key As String, Default As Variant) As String
  25.  Dim bufer As String * 256
  26.  Dim Len_Value As Long
  27.  Len_Value = GetPrivateProfileString(Section, Key, Default, bufer, Len(bufer), Path_INI)
  28.  Leer_Ini = Left$(bufer, Len_Value)
  29. End Function
  30.  
  31. 'Escribe un dato en el INI _
  32. -----------------------------
  33.  
  34. 'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave
  35. Public Function Grabar_Ini(Path_INI As String,Section as string, Key As String, Valor As Variant) As String
  36.   WritePrivateProfileString Secition, Key, Valor, Path_INI
  37. 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:
Código
  1. ClaseIni.Leer_Ini("Dir del archivo ini","Sistema","CLAVE a leer","un Valor Default sino existe tal valor en el ini o 0")
  2.  

para guardar:
Código
  1. 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")


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: cobein en 25 Mayo 2008, 17:30 pm
@ 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.


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: Zeroql en 25 Mayo 2008, 18:14 pm
UMMM puede ser, pero dejemoslo asi para los novatos. al fin y acabo que esta pensada para ellos.


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: naderST en 25 Mayo 2008, 18:25 pm
La mejor clase para los ini que he visto y usado es la de Cobein k por cierto Cobein deberias postearla aca  :P


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: Zeroql en 25 Mayo 2008, 18:40 pm
puede ser
cobein posteala en aca para comparar y que los demas se escojan cual les parece mejor no te parece?


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: seba123neo en 25 Mayo 2008, 18:59 pm
@ Cobein

me parece que es solo un modulo normal,¿¿es la que usabamos en los widget??,pues bueno si es esa,funciona perfecto..

saludos.


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: Kizar en 25 Mayo 2008, 20:52 pm
Lo he adaptado a mi manera:
Código:
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


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: SKL (orignal) en 25 Mayo 2008, 22:45 pm
anda a saber donde debe andar cobein jaja

aca les dejo la clase ini:http://www.uploadsourcecode.com.ar/d/gIgNKU7hqdXrTmUFV59HGUGruP5FeQb2

saludos


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: cobein en 26 Mayo 2008, 11:05 am
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.


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: Zeroql en 27 Mayo 2008, 18:05 pm
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.


Título: Re: Clase Ini totalmente funcional. (source)
Publicado por: cobein en 27 Mayo 2008, 18:14 pm
Ahora quedo mejor!

Mi observacion fue simplemente para ayudar, se supone que la idea es que todos aprendamos de todos, y es bueno que comenten y hagan criticas constructivas asi todos podemos mojorar los codes y aprender.