IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[Fichiers.INI ] Comment les lire correctement ?


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut [Fichiers.INI ] Comment les lire correctement ?
    J'ai une application que je souhaite configurer à partir d'un fichier .ini que je dois ecrire.
    Je fais le test avec la fonction de Mr.Lasserre et je procède comme suit :
    Dans mon fichier ini (cpTest.ini) :
    j'entre premièrement (pour le test) les paramètres de connexion à SQL :
    [Connexion]
    cnx = "Data source=XXXXXXX;Integrated Security=SSPI;Initial Catalog=XXXX"

    et je mets le fichier dans le même répértoire de l'application.

    Côté Visual Studio 2008 :
    Je déclare dans un module les deux fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public 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 Short, ByVal lpFileName As String) As Integer
    et


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function Get_Private_Profile_String(ByVal cAppName As String, ByVal cKeyName As String, ByVal cKeyDefault As String, ByRef cKeyValue As String, ByVal cProfName As String) As Integer
            Dim iReaded As Integer
            Const sLongueur As Short = 255
            If cKeyName = "" Then
                cKeyValue = Space$(1025)
                iReaded = GetPrivateProfileString(cAppName, "", "", cKeyValue, 1024, cProfName)
            Else
                cKeyValue = Space$(255)
                iReaded = GetPrivateProfileString(cAppName, cKeyName, cKeyDefault, cKeyValue, sLongueur, cProfName)
            End If
            cKeyValue = Trim$(cKeyValue)
                Get_Private_Profile_String = iReaded
    End Function
    Puis dans un autre module où je déclare ma connexion (qui était avant comme ca) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public sub OpenConnexion ()
    cnx = New Sql ("Data source=XXXXXXX;Integrated Security=SSPI;Initial Catalog=XXXX")
    End Sub
    J'essaie de déclarer les arguments nécéssaire et leurs affecter les valeurs correspondants comme suit, enfin chercher la valeur de la clef dans le fichier ini, ici c'est pour la connexion, donc mon code permettant d'ouvrir la connexion devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub OpenConnexion()
    Dim cRubrique As String = "Connexion"    'Nom de la rubrique
    Dim cKey As String = "cnx"                    'Nom de la clé
    Dim cRepertoire As String = Space(255)   'Variable récupérant la string  
    Dim cIniFile As String = "cpTest.ini"       'Nom du fichier Ini 
    Dim istat As Integer
    'Appel de la fonction
    istat = Get_Private_Profile_String(cRubrique, cKey, "", cRepertoire, cIniFile)
    cnx = New SqlConnection(istat)
    End Sub
    Enfin, je cherche à lire les données contenus dans un fichier .ini que je mets dans le même dossier de l'application.

    J'ai l'erreur suivante à l'initialisation de la connexion :
    Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 0

    Pourriez - vous m'aider?

    Ce n'est pas que je cherche complexifier la vie avec ini en .net, je sais qu'il ya moyen de créer un fichier de configuration en xml, mais ce fichier contient toute la configuration d'une autre application qu'on a pas encore migrer vers dot Net. Maintenant, les deux applications (l'ancienne et la partie migré vers Dot Net) douvent tourner avec les mêmes paramètres, enfin, le même fichier ini.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut Pourquoi encore utilisé des fichiers ini ??
    Salut,

    Juste une petite question... Pourquoi utilises-tu encore des fichiers ini pour configurer ton application ?

    En effet, je trouve beaucoup plus simple d'utiliser les Paramètres disponible depuis la fenêtre de propriété de ton projet. Ensuit pour définir/récupérer une valeur un simple My.Settings.NomDuParametre te donnera la valeur enregistrer dans le fichier de configuration.

    A mon gout, c'est plus simple et c'est efficace

  3. #3
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Oui je sais Mais...
    En fait, on me l'a demandé , et je n'ai pas le choix, et comme j'ai expliqué, ce fichier permettra de faire tourner deux application à la fois sans devoir tout changer. On m'a demandé une configuration avec un INI et je suis un petit matelot d'execution, alors, je dis Ouiiii Chef et je fonce !! Voilà pourquoi je veux absolument utiliser un fichier ini

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut Ok
    Ok, alors puisque tu désires vraiment utiliser les fichiers Ini, voici une classe que j'ai utilisé à un moment. Elle fonctionne et est assez simple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    Imports System.Text
     
    Public Class Inifile
     
    #Region "Notes"
    '
    ' Class:       Inifile.vb
    ' Author:      Ivan Lutrov <ivan@lutrov.com>
    ' Version:     1.3
    ' Description: Lightweight infile handling class
    ' Written:     September 2006.
    ' Notes:       
    '
    ' THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR
    ' MODIFY IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE
    ' AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2.1 OF
    ' THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
    '
    ' THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
    ' WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
    ' MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
    ' LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
    '
    ' YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC
    ' LICENSE ALONG WITH THIS LIBRARY; IF NOT, WRITE TO:
    ' THE FREE SOFTWARE FOUNDATION, INC,
    ' 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
    '
    ' 
    #End Region
     
    #Region "API declarations"
     
       Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal DefVal As String, ByVal RetVal As StringBuilder, ByVal Size As Integer, ByVal FileName As String) As Integer
       Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal Value As String, ByVal FileName As String) As Integer
       Private Declare Ansi Function GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" (ByVal AppName As String, ByVal KeyName As String, ByVal DefVal As Integer, ByVal FileName As String) As Integer
       Private Declare Ansi Function FlushPrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal AppName As Integer, ByVal KeyName As Integer, ByVal Value As Integer, ByVal FileName As String) As Integer
     
    #End Region
     
    #Region "Constructor"
     
       Public Sub New(Optional ByVal FileName As String = "")
          If Len(FileName) > 0 Then
             MyFileName = FileName
          Else
             MyFileName = Replace(Application.ExecutablePath(), ".exe", ".ini")
          End If
       End Sub
     
    #End Region
     
    #Region "Private properties"
     
       Private MyFileName As String
     
       ReadOnly Property FileName() As String
          Get
             Return MyFileName
          End Get
       End Property
     
    #End Region
     
    #Region "Public methods"
     
       Public Function LoadString(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "") As String
          Try
             Dim Result As New StringBuilder(256), Length As Integer
             Length = Me.GetPrivateProfileString(Section, Key, DefaultValue, Result, Result.Capacity, MyFileName)
             If Length > 0 Then
                Return Left(Result.ToString, Length)
             End If
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.LoadString")
          End Try
       End Function
     
       Public Function LoadInteger(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As Integer = 0) As Integer
          Try
             Return Me.GetPrivateProfileInt(Section, Key, DefaultValue, MyFileName)
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.LoadInteger")
          End Try
       End Function
     
       Public Function LoadBoolean(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As Boolean = False) As Boolean
          Try
             Return IIf(Me.GetPrivateProfileInt(Section, Key, CInt(DefaultValue), MyFileName) = 1, True, False)
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.LoadBoolean")
          End Try
       End Function
     
       Public Sub SaveString(ByVal Section As String, ByVal Key As String, ByVal Value As String)
          Try
             With Me
                .WritePrivateProfileString(Section, Key, Value, MyFileName)
                .FlushPrivateProfileString(0, 0, 0, MyFileName)
             End With
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.SaveString")
          End Try
       End Sub
     
       Public Sub SaveInteger(ByVal Section As String, ByVal Key As String, ByVal Value As Integer)
          Try
             With Me
                .WritePrivateProfileString(Section, Key, CStr(Value), MyFileName)
                .FlushPrivateProfileString(0, 0, 0, MyFileName)
             End With
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.SaveInteger")
          End Try
       End Sub
     
       Public Sub SaveBoolean(ByVal Section As String, ByVal Key As String, ByVal Value As Boolean)
          Try
             With Me
                .WritePrivateProfileString(Section, Key, CStr(Value), MyFileName)
                .FlushPrivateProfileString(0, 0, 0, MyFileName)
             End With
          Catch Ex As Exception
             Me.ErrorHandler(Ex, "Inifile.SaveBoolean")
          End Try
       End Sub
     
       Private Sub ErrorHandler(ByVal Ex As Exception, ByVal Where As String)
          MessageBox.Show("An error has occured in " + Where + "():" + vbCrLf + vbCrLf + Ex.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Sub
     
    #End Region
     
    End Class
    PS : Ce code n'est pas de moi et il est téléchargeable depuis l'adresse suivante : http://lutrov.com/blog/vbnet-inifile-class/

  5. #5
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci pour ta class, juste si tu veux bien m'éxpliquer comment procéder? De la création de cette class à la récupération des valeurs.
    Merci

    Si j'ai bien compris, je vais créer une nouvelle classe dans mon application. je fais copie/paste, puis? Comment lire les valeurs contenu dans le fichier ini?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut Utilisation
    Salut,

    Voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ' Initialisation du programme
    Public Sub Init()
        Dim Param as New Inifile("C:\Param.ini") ' Ouverture du fichier ini depuis l'emplacement spécifié
        Dim Param as New Inifile() ' Ouverture d'un fichier Ini du type MonAppli.ini
     
        ' Lecture de paramètre
        Dim MaChaine as String
        Dim MonEntier as Integer
        Dim MonBooleen as Boolean
     
        MaChaine = Param.LoadString("Section", "Chaine", "Une valeur par défaut")
        MonEntier = Param.LoadInteger("Section", "Entier", 18)
        MonBooleen = Param.LoadBoolean("Section", "Booleen", True)
     
        ' Ecriture des paramètres
        Param.SaveString("Section", "Chaine", MaChaine)
        Param.SaveInteger("Section", "Entier", MonEntier)
        Param.SaveString("Section", "Booleen", MonBooleen)
    End Sub
    Ceci permet de lire et écrire dans un fichier Ini avec cette structure :
    [Section]
    Chaine=Une chaine de configuration
    Entier=45
    Booleen=Vrai

  7. #7
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci Te-Deum.

    Je vais tester ca et te dire quoi.

    J'ai crée une nouvelle class que je nomme Inifile.
    Je copie le code soigneusement mais VB me souligne pas mal de mot en vert, quand je passe la sourie dessus, j'ai une infobulle qui m'affiche l'erreur suivante :
    Accès d'un membre partagé, d'un membre de constante, d'un membre emun ou d'un type imbriqué via une instance, l'expression quanlifiante ne sera pas évaluée.

    VB me souligne les expressions suivante :

    - Me.GetPrivateProfileString
    - Me.GetPrivateProfileInt
    - Me.WritePrivateProfileString
    - Me.FlushPrivateProfileString


    et pour la première fonction dans la région "Public méthode", End Function est aussi souligné avec infobulle affichant :

    La fonction 'load string' ne retourne pas de valeur pour tout les chemins de code. Une exception de référence null peut se produire au moment de l'execution lorsque le résultat est utilisé.


    c'est mal parti

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonsoir tssi555,

    Pour la première erreur :
    Accès d'un membre partagé, d'un membre de constante, d'un membre emun ou d'un type imbriqué via une instance, l'expression quanlifiante ne sera pas évaluée
    il suffit de supprimer les Me.
    Et pour la seconde, il suffit de mettre le return en dehors du Try/Catch
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  9. #9
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci neguib.
    Le premier problème est résolu.
    Juste pour Return, dans cette portion de code, je ne sais pas si je vais la mettre avec la condition en dehor de Tri/Catch, je fais comment dans ce cas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function LoadString(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "") As String
            Try
            Dim Result As New StringBuilder(256), Length As Integer
            Length = GetPrivateProfileString(Section, Key, DefaultValue, Result, Result.Capacity, MyFileName)
            If Length > 0 Then
                Return Left(Result.ToString, Length)
            End If
            Catch Ex As Exception
            Me.ErrorHandler(Ex, "Inifile.LoadString")
            End Try
     End Function
    Autre question :

    Qu'est ce que je dois mettre à la place de "Valeur par défaut" dans la ligne suivante (Pour la lecture du fichier ini)?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaChaine = Param.LoadString("Section", "Chaine", "Une valeur par défaut")

  10. #10
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour

    D'accord , disons que ce sont les déclarations qui doivent être en dehors du bloc Try/Catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function LoadString(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "") As String
            Dim Result As New StringBuilder(256)
            Dim Length As Integer
    Try
            Length = GetPrivateProfileString(Section, Key, DefaultValue, Result, Result.Capacity, MyFileName)
            If Length > 0 Then Return Left(Result.ToString, Length)
            Else Return String.Empty 'par exemple
            End If
            Catch Ex As Exception
            Me.ErrorHandler(Ex, "Inifile.LoadString")
            End Try
     End Function
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  11. #11
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci neguib mais tjrs "End Function" souligné en bleu.

  12. #12
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    En bleu ou en vert ?
    Et que dis cette erreur ?
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  13. #13
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Désolé Danyel, mais faut que je change mes lunettes .
    C'est en vert pas en bleu.
    L'erreur est :
    La fonction 'load string' ne retourne pas de valeur pour tout les chemins de code. Une exception de référence null peut se produire au moment de l'execution lorsque le résultat est utilisé.

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonsoir
    Essayes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Public Function LoadString(ByVal Section As String, ByVal Key As String, Optional ByVal DefaultValue As String = "") As String
       Dim Result As New StringBuilder(256)
       Dim Length As Integer
       Dim retour As String = String.Empty
       Try
          Length = GetPrivateProfileString(Section, Key, DefaultValue, Result, Result.Capacity, MyFileName)
          If Length > 0 Then
             retour = Left(Result.ToString, Length)
          End If
       Catch Ex As Exception
          Me.ErrorHandler(Ex, "Inifile.LoadString")
       End Try
       Return retour
    End Function
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  15. #15
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    L'erreur dont tu nous signales est simple.
    Ta function doit obligatoirement renvoye une valeur/donnee et dans le code de la dite function ce n'est pas le cas dans toutes les conditions.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  16. #16
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Merci neguib,

    l'erreur est disparu.


    Qu'est ce que je dois mettre à la place de "Valeur par défaut" dans la ligne suivante (Pour la lecture du fichier ini)?


    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaChaine = Param.LoadString("Section", "Chaine", "Une valeur par défaut")

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 90
    Points : 77
    Points
    77
    Par défaut Désolé, j'ai été out qques jours
    Salut,

    Désolé, j'ai été out pendant quelques jours...

    A la place de "Valeur par défaut", tu mets la valeur que tu souhaites obtenir si le paramètre "Chaine" n'est pas trouvé dans la section "Section".

    Prenons par exemple un premier lancement de ton logiciel. LE fichier de configuration (Fichier Ini) n'existe pas. Alors lors de la lecture des paramètres, tu peux obtenir des valeurs de configuration par défaut qui seront les valeurs que tu auras mis à la place de "Valeur par défaut".
    Par la suite, si le paramètre est trouvé alors la fonction te renverra la valeur du fichier Ini et plus la valeur par défaut.

    J'espère avoir été assez explicite.
    A plus...

  18. #18
    Membre actif Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    J'ai abondoné ce sujet pour quelque temps (en raison de réalisation d'autres tâches de développment ayant la priorité avant la configuration) mais là, je me trouve obligé à faire tourner l'application avec un fichier ini que je ne sais pas vraiment utiliser malgré vos explications .

    Pour faire simple, (et pour le test tout d'abord) :

    - J'ai crée la classe que Te-Deum m'a donné.
    - Puis j'ai crée dans un module une procédure public pour m'en servir dans tout le projet, c'est dans cella je mets la portion de code pemettant de récupérer les informations de connexion contenu dans mon fichier ini.

    Code de la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Param As New Inifile("C:\Test.ini")         
            Dim MaChaine As String
            MaChaine = Param.LoadString("[Connexion]", "cnx", "")
    Mon fichier Test.ini contient (pour le test) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Connexion]
    cnx="Data source=XXXXXXXXX;Integrated Security=SSPI;Initial Catalog=XXXXXXXXXXXXX"

    Enfin bon, pour mieux demander ce que je cherche.
    C'est d'avoir accès au fichier ini, lire la chaine de connexion et me connecter à la base de données SQL Server de test (en local pour le moment).
    PS : Pour le moment je travaille avec un fichier xml paramérté que l'on puisse générer automatiquement à partir de My Projet, mais ce n'est pas vraiment ce qu'on m'a demandé, xml juste provisoirement pour faire tourner l'application en local et pour les tests.

    Merci de votre aide.

  19. #19
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Bonjour tssi555,

    Désolé, mais il m'est difficile de te comprendre . Tu as tout ce qu'il faut pour réaliser ce que souhaite ton client.
    Qu'est-ce qui peut bien encore posé souci
    Explique ce que tu ne sais pas faire ?
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  20. #20
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Ce serai pas plutôt :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Param As New Inifile("C:\Test.ini")         
            Dim MaChaine As String
            MaChaine = Param.LoadString("Connexion", "cnx", "")
    ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/01/2008, 15h24
  2. [Fichiers KB] comment les localiser
    Par PSYcoZZ dans le forum Windows XP
    Réponses: 2
    Dernier message: 16/12/2007, 16h56
  3. fichiers ressources - comment les integrer
    Par pilomption dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/06/2007, 12h34
  4. Fichier ini comment s'en servir ?
    Par yaumme dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/01/2007, 19h00
  5. [Fichier LOG] Comment les lire ?
    Par BalBalNet dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2005, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo