Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] Leer archivo .ini

Estas en el tema de Leer archivo .ini en el foro de Visual Basic clásico en Foros del Web. HOLA BUEN DIA, TENGO UNA GRAN DUDA Y NO SE COMO RESOLVERLA HE LEIDO VARIOS ARTICULO PERO NO SE COMO HACERLO Y ME DA ERRORES... ...
  #1 (permalink)  
Antiguo 30/11/2011, 10:09
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 13 años, 3 meses
Puntos: 4
Pregunta Leer archivo .ini

HOLA BUEN DIA, TENGO UNA GRAN DUDA Y NO SE COMO RESOLVERLA HE LEIDO VARIOS ARTICULO PERO NO SE COMO HACERLO Y ME DA ERRORES...

ESTE ES MI ARCHIVO SIPRE.INI

[REFERENCIAS_SIPRE]

server=8247

bdatos2=SIPRE
bdatos3=INTRA


COMO HAGO PARA QUE MI SISTEMA EN VB ME LO LEA Y SE META EN MI SERVIDOR Y BUSQUE EN ESAS BASE DE DATOS

AQUI ES LO QUE HICE PERO NO SE SI ESTA BIEN

Código VB:
Ver original
  1. Global servidor1 As String
  2. Global servidor2 As String
  3. Public BD_servidor As String
  4. Public BD_usuario As String
  5. Public BD_nombre As String
  6. Public BD_clave As String
  7.  
  8. '**ABRIR EL ARCHIVO PLANO**
  9.  
  10.  Public Function Def_Var()
  11.    Dim variable, StrVar As String
  12.    Open App.Path & "\SIPRE.ini" For Input As #1
  13.  
  14.     Do While Not EOF(1)
  15.       Line Input #1, variable
  16.       StrVar = Trim(Mid(variable, 1, 10))
  17.       If UCase(StrVar) = "server=" Then
  18.          servidor1 = Trim(Mid(variable, 11, 18))
  19.       End If
  20.      
  21.        StrVar = Trim(Mid(variable, 1, 8))
  22.       If UCase(StrVar) = "bdatos2=" Then
  23.          bdatos2 = Trim(Mid(variable, 9, 16))
  24.       End If
  25.  
  26.       StrVar = Trim(Mid(variable, 1, 8))
  27.       If UCase(StrVar) = "bdatos3=" Then
  28.          bdatos3 = Trim(Mid(variable, 9, 16))
  29.       End If
  30.      
  31.       Loop
  32.  
  33.  
  34.   Close #1
  35.    
  36. End Function
  37.  
  38. Public Sub Toma_registro()
  39.  
  40.  
  41.  Dim Aux_clave As String
  42.  Dim Aux_usuario As String
  43.  
  44.  'BD_servidor = GetSetting("SIPRE", "Base de Datos", "Servidor")
  45. 'BD_nombre = GetSetting("SIPRE", "Base de Datos", "NOMBD")
  46. 'BD_usuario = GetSetting("SIPRE", "Base de Datos", "User")
  47.  
  48.  'Obj_Enc.Decrypt BD_usuario
  49. 'BD_usuario = Trim(Obj_Enc.Content)
  50.  
  51.  'BD_clave = GetSetting("SIPREFII", "Base de Datos", "Clave")
  52. 'Obj_Enc.Decrypt BD_clave
  53. 'BD_clave = Trim(Obj_Enc.Content)
  54.  
  55.  'bdatos2 = "driver={Sql Server};server=" & Trim(BD_servidor) & ";Uid=" & Trim(BD_usuario) & ";Pwd=" & Trim(BD_clave) & ";Database=" & Trim(BD_nombre)
  56.  bdatos2 = "driver={Sql Server};server=8247;Uid=sa;Pwd=123;Database=SIPRE"
  57.  'bdatos2 = "driver=(Sql Server);server=" & "localhost" & ";Uid=" & "sa" & ";Pwd=" & "123" & ";Database=" & "SIPRE"
  58.  
  59. tipo_datos1 (bdatos2)
  60.  
  61.  
  62.  'bdatos3 = "driver={Sql Server};server=" & Trim(BD_servidor) & ";Uid=" & Trim(BD_usuario) & ";Pwd=" & Trim(BD_clave) & ";Database=" & Trim(BD_nombre)
  63.  bdatos3 = "driver={Sql Server};server=8247;Uid=sa;Pwd=123;Database=INTRA"
  64.  'bdatos3 = "driver=(Sql Server);server=" & "localhost" & ";Uid=" & "sa" & ";Pwd=" & "123" & ";Database=" & "SIPRE"
  65.  
  66. tipo_datos1 (bdatos3)
  67.  
  68.  
  69. End Sub

LO QUE QUIERO ES ELIMINAR LO QUE TENGO QUEMADO EN bdatos 2 y bdatos3 Y QUE EL SISTEMA ME LEA LO QUE ESTA EN EL ARCHIVO .INI


GRACIAS A LOS QUE ME PUEDAN AYUDAR
  #2 (permalink)  
Antiguo 02/12/2011, 10:24
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 14 años, 5 meses
Puntos: 25
Mensaje Respuesta: Leer archivo .ini

Saludos, puedes probar una clase que usaba hace bastante tiempo para leer archivos INI.

A tu proyeco agregale la referencia a Microsoft Scripting Runtime (Menú Proyecto>Referencias>Selecciona Microsoft Scripting Runtime).


Crea un modulo "Declaraciones"y añade el siguente código
Código vb:
Ver original
  1. Option Explicit
  2.  
  3. ' API que recupera información de un archivo INI
  4. ' ==============================================
  5. Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
  6.     ByVal lpApplicationName As String, _
  7.     ByVal lpKeyName As String, _
  8.     ByVal lpDefault As String, _
  9.     ByVal lpReturnedString As String, _
  10.     ByVal nSize As Long, _
  11.     ByVal lpFileName As String) As Long
  12.  
  13. ' API que guarda información a un archivo INI
  14. ' ===========================================
  15. Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
  16.     ByVal lpApplicationName As String, _
  17.     ByVal lpKeyName As Any, _
  18.     ByVal lpString As Any, _
  19.     ByVal lpFileName As String) As Long

Crea una nueva clase "ArchivoIni" y añade el siguiente código.
Código vb:
Ver original
  1. ' =========================================================
  2. ' Jonathan Búcaro
  3. ' =========================================================
  4. ' Clase para el manejo de configuraciones por medio de
  5. ' archivos INI.
  6. ' =========================================================
  7. ' 25/09/2009 - Creación
  8. ' =========================================================
  9.  
  10. Option Explicit
  11.  
  12. Private m_Ruta As String
  13. Private m_Nombre As String
  14. Private m_Seccion As String
  15. Private m_Llave As String
  16. Private m_Valor As String
  17.  
  18. ' Clase ArchivoINI
  19. ' =================
  20. Private Sub Class_Initialize()
  21.     m_Ruta = App.Path
  22.     m_Nombre = ""
  23.     m_Seccion = ""
  24.     m_Llave = ""
  25.     m_Valor = ""
  26. End Sub
  27.  
  28. ' Ruta donde se encuentra el Archivo INI
  29. ' ======================================
  30. Public Property Get Ruta() As String
  31.     Ruta = m_Ruta
  32. End Property
  33.  
  34. Public Property Let Ruta(ByVal strValue As String)
  35.     If Not Len(Trim(strValue)) = 0 Then
  36.         m_Ruta = strValue
  37.     End If
  38. End Property
  39.  
  40. ' Nombre del archivo INI
  41. ' ======================
  42. Public Property Get Nombre() As String
  43.     Nombre = m_Nombre
  44. End Property
  45.  
  46. Public Property Let Nombre(ByVal strValue As String)
  47.     If Not Len(Trim(strValue)) = 0 Then
  48.         m_Nombre = strValue
  49.     End If
  50. End Property
  51.  
  52. ' Sección del Archivo INI donde se encuentra la información
  53. ' =========================================================
  54. Public Property Get Seccion() As String
  55.     Seccion = m_Seccion
  56. End Property
  57.  
  58. Public Property Let Seccion(ByVal strValue As String)
  59.     If Not Len(Trim(strValue)) = 0 Then
  60.         m_Seccion = strValue
  61.     End If
  62. End Property
  63.  
  64. ' Sección del Archivo INI donde se encuentra la información
  65. ' =========================================================
  66. Public Property Get Llave() As String
  67.     Llave = m_Llave
  68. End Property
  69.  
  70. Public Property Let Llave(ByVal strValue As String)
  71.     If Not Len(Trim(strValue)) = 0 Then
  72.         m_Llave = strValue
  73.     End If
  74. End Property
  75.  
  76. ' Valor de la Llave que se encuentra dentro de una Sección en un Archivo INI
  77. ' ==========================================================================
  78. Public Property Get Valor() As String
  79.     Valor = m_Valor
  80. End Property
  81.  
  82. Public Property Let Valor(ByVal strValue As String)
  83.     If Not Len(Trim(strValue)) = 0 Then
  84.         m_Valor = strValue
  85.     End If
  86. End Property
  87.  
  88. ' Guarda la información al Archivo INI
  89. ' ====================================
  90. Public Function GrabarLlave() As Boolean
  91.     Dim lRet As Long
  92.     Dim strPath As String
  93.     Dim fso As FileSystemObject
  94.    
  95.     Set fso = New FileSystemObject
  96.    
  97.     ' Verificar que exista el Directorio
  98.    If Not fso.FolderExists(m_Ruta) Then GoTo ErrHandler
  99.    
  100.     ' Armar la ruta completa, incluyendo el nombre del Archivo
  101.    If Right(m_Ruta, 1) = "\" Then
  102.         strPath = m_Ruta & m_Nombre
  103.     Else
  104.         strPath = m_Ruta & "\" & m_Nombre
  105.     End If
  106.  
  107.     ' Grabar la información al Archivo INI
  108.    lRet = WritePrivateProfileString(m_Seccion, m_Llave, m_Valor, strPath)
  109.     If lRet = 0 Then GoTo ErrHandler
  110.    
  111.     If Not fso Is Nothing Then Set fso = Nothing
  112.     GrabarLlave = True
  113.    
  114.     Exit Function
  115.    
  116. ErrHandler:
  117.     If Not fso Is Nothing Then Set fso = Nothing
  118.     GrabarLlave = False
  119. End Function
  120.  
  121. ' Borra una Llave dentro de una Sección del Archivo INI
  122. ' =====================================================
  123. Public Function BorrarLlave() As Boolean
  124.     Dim lRet As Long
  125.     Dim strPath As String
  126.     Dim fso As FileSystemObject
  127.    
  128.     Set fso = New FileSystemObject
  129.    
  130.     ' Verificar que se hayan establecido los valores Sección y Llave
  131.    If Len(Trim(m_Seccion)) = 0 Then GoTo ErrHandler
  132.     If Len(Trim(m_Llave)) = 0 Then GoTo ErrHandler
  133.    
  134.     ' Verificar que exista el Directorio
  135.    If Not fso.FolderExists(m_Ruta) Then GoTo ErrHandler
  136.    
  137.     ' Armar la ruta completa, incluyendo el nombre del Archivo
  138.    If Right(m_Ruta, 1) = "\" Then
  139.         strPath = m_Ruta & m_Nombre
  140.     Else
  141.         strPath = m_Ruta & "\" & m_Nombre
  142.     End If
  143.    
  144.     ' Borra una llave dentro de una Sección del Archivo INI
  145.    lRet = WritePrivateProfileString(m_Seccion, m_Llave, vbNullString, strPath)
  146.     If lRet = 0 Then GoTo ErrHandler
  147.    
  148.     If Not fso Is Nothing Then Set fso = Nothing
  149.     BorrarLlave = True
  150.    
  151.     Exit Function
  152.    
  153. ErrHandler:
  154.     If Not fso Is Nothing Then Set fso = Nothing
  155.     BorrarLlave = False
  156. End Function
  157.  
  158. ' Borra una Sección del Archivo INI
  159. ' =================================
  160. Public Function BorrarSeccion() As Boolean
  161.     Dim lRet As Long
  162.     Dim strPath As String
  163.     Dim fso As FileSystemObject
  164.    
  165.     Set fso = New FileSystemObject
  166.    
  167.     If Len(Trim(m_Seccion)) = 0 Then GoTo ErrHandler
  168.    
  169.     ' Verificar que exista el Directorio
  170.    If Not fso.FolderExists(m_Ruta) Then GoTo ErrHandler
  171.    
  172.     ' Armar la ruta completa, incluyendo el nombre del Archivo
  173.    If Right(m_Ruta, 1) = "\" Then
  174.         strPath = m_Ruta & m_Nombre
  175.     Else
  176.         strPath = m_Ruta & "\" & m_Nombre
  177.     End If
  178.    
  179.     ' Borra una seccion del Archivo INI
  180.    lRet = WritePrivateProfileString(m_Seccion, vbNullString, vbNullString, strPath)
  181.     If lRet = 0 Then GoTo ErrHandler
  182.    
  183.     If Not fso Is Nothing Then Set fso = Nothing
  184.     BorrarSeccion = True
  185.    
  186.     Exit Function
  187.    
  188. ErrHandler:
  189.     If Not fso Is Nothing Then Set fso = Nothing
  190.     BorrarSeccion = False
  191. End Function
  192.  
  193. ' Lee la información de una Llave dentro de una Sección del Archivo INI
  194. ' =====================================================================
  195. Public Function LeerLlave() As Boolean
  196.     Dim lRet As Long
  197.     Dim sDefault As String
  198.     Dim sRetValue As String * 256
  199.     Dim strPath As String
  200.     Dim fso As FileSystemObject
  201.    
  202.     Set fso = New FileSystemObject
  203.    
  204.     ' Verificar que se hayan establecido los valores Sección y Llave
  205.    If Len(Trim(m_Seccion)) = 0 Then GoTo ErrHandler
  206.     If Len(Trim(m_Llave)) = 0 Then GoTo ErrHandler
  207.    
  208.     ' Verificar que exista el Directorio
  209.    If Not fso.FolderExists(m_Ruta) Then GoTo ErrHandler
  210.    
  211.     ' Armar la ruta completa, incluyendo el nombre del Archivo
  212.    If Right(m_Ruta, 1) = "\" Then
  213.         strPath = m_Ruta & m_Nombre
  214.     Else
  215.         strPath = m_Ruta & "\" & m_Nombre
  216.     End If
  217.    
  218.     sDefault = ""
  219.     lRet = GetPrivateProfileString(m_Seccion, m_Llave, sDefault, sRetValue, Len(sRetValue), strPath)
  220.    
  221.     If lRet = 0 Then GoTo ErrHandler
  222.  
  223.     Valor = Left(sRetValue, lRet)
  224.     LeerLlave = True
  225.     If Not fso Is Nothing Then Set fso = Nothing
  226.    
  227.     Exit Function
  228.    
  229. ErrHandler:
  230.     If Not fso Is Nothing Then Set fso = Nothing
  231.     Valor = sDefault
  232.     LeerLlave = False
  233. End Function

Para utilizarlo:
Código vb:
Ver original
  1. Dim Contenido as String
  2.  
  3. ' Crear el objeto
  4. Private Configuracion As ArchivoINI
  5. Set Configuracion = New ArchivoINI
  6.  
  7. With Configuracion
  8.     ' Nombre del archivo. Si no se especifica ruta, tomara default el app.path
  9.    .Nombre = "miArchivo.ini"
  10.  
  11.     .Seccion = "miSeccion"
  12.     .Llave = "miLlave"
  13.  
  14.     ' Si no existe la llave dentro de la sección, generar error 380
  15.    If Not .LeerLlave Then Err.Raise 380, "miLlave"
  16.     Contenido = .Valor
  17.  
  18. End With
  19.  
  20. ' Limpiar el objeto
  21. If Not Configuracion Is Nothing Then Set Configuracion = Nothing

Recuerda que un archivo INI esta compuesto por secciones y llaves

Ejemplo de sección:
[Seccion1]
[ConfigBD]

Ejemplo de Sección y Llave:
[ConfigBD]
Servidor=125.2.204.52
Usuario=sa

Espero que te sea de utilidad.

Última edición por JonathanB; 02/12/2011 a las 21:01
  #3 (permalink)  
Antiguo 05/12/2011, 07:47
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 13 años, 3 meses
Puntos: 4
Respuesta: Leer archivo .ini

hola, bueno gracias pero ya habia resuelto utilice

Código Visual Basic:
Ver original
  1. Public Sub Toma_registro()
  2.  
  3.  
  4.  Dim Aux_clave As String
  5.  Dim Aux_usuario As String
  6.    
  7.     Dim variable, StrVar As String
  8.     Open App.Path & "\SIPRE.ini" For Input As #1
  9.  
  10.     Do While Not EOF(1)
  11.       Line Input #1, variable
  12.       StrVar = Trim(Mid(variable, 1, 7))
  13.       If StrVar = "server=" Then
  14.          Server = Trim(Mid(variable, 8, 15))
  15.       End If
  16.      
  17.        
  18.       StrVar = Trim(Mid(variable, 1, 7))
  19.       If StrVar = "datos2=" Then
  20.          datos2 = Trim(Mid(variable, 8, 15))
  21.       End If
  22.  
  23.       StrVar = Trim(Mid(variable, 1, 7))
  24.       If StrVar = "datos3=" Then
  25.          datos3 = Trim(Mid(variable, 8, 15))
  26.       End If
  27.      
  28.  
  29.       Loop
  30.  
  31.  
  32.  
  33.  'bdatos2 = "driver={Sql Server};server=" & Trim(BD_servidor) & ";Uid=" & Trim(BD_usuario) & ";Pwd=" & Trim(BD_clave) & ";Database=" & Trim(BD_nombre)
  34.   bdatos2 = "driver={Sql Server};server=" & Server & ";Uid=" & "sa" & ";Pwd=" & "pwd" & ";Database=" & datos2
  35.  'bdatos2 = "driver=(Sql Server);server=" & "localhost" & ";Uid=" & "sa" & ";Pwd=" & "pwd" & ";Database=" & "SIPRE"
  36.  
  37. tipo_datos1 (bdatos2)
  38.  
  39.  
  40.  'bdatos3 = "driver={Sql Server};server=" & Trim(BD_servidor) & ";Uid=" & Trim(BD_usuario) & ";Pwd=" & Trim(BD_clave) & ";Database=" & Trim(BD_nombre)
  41.   bdatos3 = "driver={Sql Server};server=" & Server & ";Uid=" & "sa" & ";Pwd=" & "pwd" & ";Database=" & datos3
  42.  'bdatos3 = "driver=(Sql Server);server=" & "localhost" & ";Uid=" & "sa" & ";Pwd=" & "pwd" & ";Database=" & "SIPR"
  43.  
  44. tipo_datos1 (bdatos3)
  45.  
  46.  
  47. End Sub

y funciona perfectamente
  #4 (permalink)  
Antiguo 05/12/2011, 12:46
Usuario no validado
 
Fecha de Ingreso: junio-2010
Ubicación: Guatemala
Mensajes: 196
Antigüedad: 14 años, 5 meses
Puntos: 25
Respuesta: Leer archivo .ini

Saludos, me alegra que hayas encontrado una solución a tu problema. Sin embargo no es la solución definitiva para leer archivos INI: http://en.wikipedia.org/wiki/INI_file

Un Archivo INI puede estar compuesto de propiedades, valores, secciones, comentarios, lineas en blanco, valores en comillas.

La solución que mencionas es especifica de tu proyecto.

  #5 (permalink)  
Antiguo 07/12/2011, 15:03
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Leer archivo .ini

Hola!
Este es mi aporte:

En un modulo:

Código vb:
Ver original
  1. 'INI
  2. Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  3. Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  4.  
  5. Public Function LeerINI(strClave As String, strNombre As String, Optional ByVal strDefecto As String) As String
  6.     Dim intTamano As Integer
  7.     Dim strTexto As String
  8.     Dim strArchivoINI As String
  9.    
  10.     strArchivoINI = App.Path & "\Config.INI"
  11.     strTexto = Space(200)
  12.     intTamano = GetPrivateProfileString(strClave, strNombre, "", strTexto, Len(strTexto), strArchivoINI)
  13.    
  14.     If intTamano > 0 Then
  15.         strTexto = Left$(strTexto, intTamano)
  16.     Else
  17.         strTexto = ""
  18.     End If
  19.    
  20.     If Len(strTexto) Then
  21.         LeerINI = strTexto
  22.     Else
  23.         LeerINI = strDefecto
  24.     End If
  25. End Function
  26.  
  27. Public Function EscribirINI(strClave As String, strNombre As String, strTexto As String) As String
  28.     Dim intTamano As Integer
  29.     Dim strArchivoINI As String
  30.    
  31.     strArchivoINI = App.Path & "\Config.ini"
  32.    
  33.     intTamano = WritePrivateProfileString(strClave, strNombre, strTexto, strArchivoINI)
  34. End Function


• Uso para escribir:
strRuntime = EscribirINI("CLAVE", "NOMBRE", TEXTO)

• Uso para Leer:
strRuntime = LeerLicencia("CLAVE", "NOMBRE", "VALOR DEFAULT")

El "VALOR DEFAULT" es el valor por defecto si no se encuentra el valor de la llave "NOMBRE"


Esta es la composicion archivo .ini:
[CLAVE]
NOMBRE=lokoman


!!

Etiquetas: ini, sql, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:22.