Archivos INI

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Archivos INI

    Hola de nuevo. (Amenacé con volver y lo he hecho).
    Estoy intentando crear un fichero INI para una aplicación que estoy transcribiendo a .NET y lo cierto es que no doy con ello.
    Tengo entendido que en la actualidad ya no se utilizan esos archivos y se aplican otras técnicas, pero no sé cómo hacerlo.
    ¿Podríais indicarme alguno en donde informarme sobre ello y -esto ya para nota- ver algún ejemplo?. ¡Anda que no soy nadie pidiendo!
    Muchas gracias por vuestra ayuda y saludos a todos.
    Miguel

  • #2
    A ver si tengo la suerte de ponerte suficiente luz, en un tema que, a mi parecer, es MUY SENCILLO:

    Te pongo un ejemplo de cómo defino los parámetros de cada cliente en una aplicación que utilizan varios usuarios, cada uno desde su despacho, conectándose con una base de datos que existe un un server contratado.

    Observa cómo cada "INI_Read" pasa a las variables el valor que en el archivo INI tiene en el grupo GOE la línea ODBC o CONEX o USUHAB

    En un módulo:
    Código:
      Public nUsuHab As Byte
      Public ConexMySQL                   As ADODB.Connection
      
      Sub ConectarMySQL()
          Dim cPath As String
          Dim cPort As String
          Dim cBdPw As String
          Dim cODBC As String
          Dim cServer As String
        
          cPath = App.Path & "\Conex_Hosting.ini"
          cBdPw = "PWD=clavedelabasededatos"
      
          cPort = "PORT=3306;"
          If Dir(cPath) <> "" Then
              cODBC = INI_Read(cPath, "GOE", "ODBC", "NULL")
              cServer = INI_Read(cPath, "GOE", "CONEX", "NULL")
              nUsuHab = INI_Read(cPath, "GOE", "USUHAB", "NULL")
          Else
              End
              Exit sub
          End If
          Set ConexMySQL = New ADODB.Connection
          DoEvents
          ConexMySQL.CursorLocation = adUseClient
          ConexMySQL.Open cODBC & cServer & cPort & cBdPw
      End Sub
      
      Sub Main()
          ....
          ConectarMySQL
          ....
      End Sub
    Archivo Conex_Hosting.ini
    (Lógicamente, cada usuario tiene en este fichero sus propios datos,
    personalizados, que son los que definen los filtros y
    condiciones del mismo en la aplicación.)

    Código:
      [GOE]
      ODBC=DRIVER={MySQL ODBC 3.51 Driver};
      CONEX=SERVER=mysql.nombredelservidor.es;DATABASE=nombredelabasededatos;UID=nombredelusuario;
      USUHAB=1 (Cada cliente tiene un número correlativo)
    O sea que en el archivo .ini tienes que poner
    [GRUPO]
    VAR1=Valor para primera variable
    VAR2=Valor para segunda variable
    etc...

    Y en el código de tu aplicación, defines el nombre del archivo.ini, con su ubicación, y vas asignando a tus variables el valor que consta en las líneas del arcivo.ini:
    MiVariable1=INI_Read(cPath, "GRUPO", "VAR1", "NULL")
    MiVariable2=INI_Read(cPath, "GRUPO", "VAR2", "NULL")...


    Suerte y fuerte abrazo
    José María Movilla Cuadrado
    ______________________
    Normas del foro
    www.foro.vb-mundo.com
    www.vb-mundo.com

    Comentario


    • #3
      Hola José María.
      Ante todo, enviarte un fortísimo abrazo y agradecerte tu ya acostumbrada ayuda y colaboración habituales.
      Este ejemplo que me has enviado es estupendo y le guardo para utilizarlo en el futuro en el caso de que decida trabajar con servidores.
      en mi caso, en la aplicación actual en VB6 para lo único que le utilizo es para indicar en dónde está ubicada la BD de la aplicación, con lo que el contenido es muy sencillo.
      Este el contenido del fichero Conexion.ini que vengo utilizando:

      [DATABASE]
      camino=C:\Gestion
      databasename=C:\Base_Datos.mdb
      cadenaconexion = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=


      y lo cierto es que no sé cómo hacerlo para leer esta información en .NET
      Un abrazo.

      Comentario


      • #4
        Antes de nada debo indicarte que en mi anterior post se me olvidó indicarte que en el módulo tienes que tener también esto:
        Código:
        Public 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
        
        'Función para leer los datos en archivos INI:
        
        Public Function INI_Read(Filename As String, Key_Value As String, Key_Name As String, Optional ByVal Default As String) As String
            'On Error GoTo ErrOut
            Dim size As Integer
            Dim value As String
            
            'Comprobamos que el archivo existe.
            If Dir(Filename) = "" Then Err.Raise 53
        '    If Not SYS_FileExists(Filename) Then Err.Raise 53
            
            'Se define el tamaño maximo de caracteres
            'que podra tener la variable Value
            value = Space(200)
            'Se utiliza la función para obtener
            'el valor de la clave
            size = GetPrivateProfileString(Key_Value, Key_Name, "", value, Len(value), Filename)
            'Si el tamaño es mayor a -1 entonces
            'se ha encontrado el valor de la clave
            If size > 0 Then
                value = Left$(value, size)
            Else
                INI_Read = Default
            End If
        
            'Devolver el dato...
            'Verificar que el dato no sea nulo,
            'en caso de ser nulo de se devuelve
            'el valor por defecto (Default)
            If Len(value) Then
                INI_Read = value
            Else
                INI_Read = Default
            End If
            Exit Function
        
        ErrOut:
            INI_Read = Default
        End Function
        Y ahora, dime cómo es el código que utilizarías para la conexión en el caso de que lo hicieras directamente, sin archivo .ini (porque sigo sin tener conocimientos suficientes de .NET)

        Antes de nada me atrevo a decirte que personalmente creo peligroso el que sitúes la base de datos en la raiz de C:. ¿Por qué no la pones en una carpeta (por ejemplo Mis datos) dentro de C:\Archivos de programa? De esa forma sóo tendrías que cambiar databasename=C:\Base_Datos.mdb por databasename=C:\Archivos de programa\Mis datos\Base_Datos.mdb
        José María Movilla Cuadrado
        ______________________
        Normas del foro
        www.foro.vb-mundo.com
        www.vb-mundo.com

        Comentario

        Trabajando...
        X