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 :

Lire et Ecrire dans fichier ini


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juillet 2015
    Messages : 17
    Par défaut Lire et Ecrire dans fichier ini
    Bonjour à tous;

    Je veux lire et écrire dans un fichier ini qui se trouve dans le dossier de mon app vb.net; mais mon problème les code suivante me met des erreurs.

    Code dans module1
    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
    Module Module1
     
        'Lit Dans Fichier Ini
        Private 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
        'Ecrit Dans Fichier Ini
        Private 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
        Public Function LitDansFichierIni(ByVal Section As String, ByVal Cle As String, ByVal Fichier As String, Optional ByVal ValeurParDefaut As String = "") As String
            Dim strReturn As String
    strReturn = String(65130, 0)
            GetPrivateProfileString(Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier)
            LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
        End Function
        Public Function EcritDansFichierIni(ByVal Section As String, ByVal Cle As String, ByVal Valeur As String, ByVal Fichier As String) As Long
            EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
        End Function
     
    End Module
    Erreurs:
    Erreur 1 'As Any' n'est pas pris en charge dans les instructions 'Declare'.
    Erreur 2 'As Any' n'est pas pris en charge dans les instructions 'Declare'.
    Erreur 3 'As Any' n'est pas pris en charge dans les instructions 'Declare'.
    Erreur 4 'String' est un type classe et ne peut pas être utilisé en tant qu'expression.
    Erreur 5 '.' attendu.

    Code dans Public Class Main:
    Pour lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub BT_LIRE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_LIRE.Click
            Dim CheminFichierIni As String
            CheminFichierIni = Path & "\depenses.ini"
            TextBox1 = LitDansFichierIni("Janvier", "Revenus", CheminFichierIni)
        End Sub
    Erreur 1 'Path' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
    Erreur 2 Impossible de convertir une valeur de type 'String' en 'System.Windows.Forms.TextBox'.

    Pour écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub BT_ECRIRE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_ECRIRE.Click
            Dim CheminFichierIni As String
            CheminFichierIni = Path & "\depenses.ini"
            EcritDansFichierIni("Janvier", "Revenus", TextBox2.Text, CheminFichierIni)
        End Sub
    Erreur 1 'Path' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection.
    Erreur 2 Impossible de convertir une valeur de type 'String' en 'System.Windows.Forms.TextBox'.

    Avez-vous une solution pour corriger les érreurs.

    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 37
    Par défaut
    Salut je voit plein d erreur Any ce sont des integer
    bref j ai une classe qui marche bien pour ca
    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
     
    'Public Class ToutPourFichierINI
     
    Imports System.Runtime.InteropServices
    Imports System.IO
    Imports System.Text
     
    Public Class ToutPourFichierINI
     
    #Region "Natives Methods"
     
        Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
        ByVal lpKeyName As String, ByVal lpDefault As String, _
        ByVal lpReturnedString As String, ByVal nSize As Int32, _
        ByVal lpFileName As String) As Int32
     
        <DllImport("kernel32")> _
        Private Shared Function GetPrivateProfileString(ByVal Section As String, ByVal Key As Integer, ByVal Value As String, <MarshalAs(UnmanagedType.LPArray)> ByVal Result As Byte(), ByVal Size As Integer, ByVal FileName As String) As Integer
        End Function
     
        <DllImport("kernel32")> _
        Private Shared Function GetPrivateProfileString(ByVal Section As Integer, ByVal Key As String, ByVal Value As String, <MarshalAs(UnmanagedType.LPArray)> ByVal Result As Byte(), ByVal Size As Integer, ByVal FileName As String) As Integer
        End Function
     
        Private Declare Unicode Function WritePrivateProfileString Lib "kernel32" _
        Alias "WritePrivateProfileStringW" (ByVal lpApplicationName As String, _
        ByVal lpKeyName As String, ByVal lpString As String, _
        ByVal lpFileName As String) As Int32
     
    #End Region
     
    #Region "Méthodes publiques"
     
        'Suppression de section
        Public Shared Sub INIDelete(ByVal INIPath As String, ByVal SectionName As String)
            Dim lpKeyName As String = Nothing
            Dim lpString As String = Nothing
            WritePrivateProfileString(SectionName, lpKeyName, lpString, INIPath)
        End Sub
     
        'Suppression de clé
        Public Shared Sub INIDelete(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String)
            Dim lpString As String = Nothing
            WritePrivateProfileString(SectionName, KeyName, lpString, INIPath)
        End Sub
     
        'Lecture sections (Clés/Valeurs)
        Public Shared Function INIRead(ByVal INIPath As String) As String
            Return INIRead(INIPath, Nothing, Nothing, "")
        End Function
     
        'Lecture Clés/Valeurs d'une section spécifiée
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String) As String
            Return INIRead(INIPath, SectionName, Nothing, "")
        End Function
     
        'Lecture Valeur d'une section et clé spécifiée
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String) As String
            Return INIRead(INIPath, SectionName, KeyName, "")
        End Function
     
        'Lecture Valeur d'une section et clé spécifiée (retourne vaneur par défaut si elle n'existe pas)
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String, ByVal DefaultValue As String) As String
            Dim lpReturnedString As String = Strings.Space(2048)
            Dim length As Integer = GetPrivateProfileString(SectionName, KeyName, DefaultValue, lpReturnedString, lpReturnedString.Length, INIPath)
            If length > 0 Then
                Return lpReturnedString.Substring(0, length)
            End If
            Return ""
        End Function
     
        'Ecriture Clés/Valeurs dans une section spécifiée
        Public Shared Sub INIWrite(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String, ByVal TheValue As String)
            WritePrivateProfileString(SectionName, KeyName, TheValue, INIPath)
        End Sub
     
        'Détecte si section spécifiée existe
        Public Shared Function INISectionExist(ByVal INIPath As String, ByVal SectionName As String) As Boolean
            For Each sect In INISectionNames(INIPath)
                If sect.ToLower = SectionName.ToLower Then
                    Return True
                End If
            Next
            Return False
        End Function
     
        'Retourne tous les noms des sections existantes dans le fichier de configuration
        Public Shared Function INISectionNames(ByVal INIPath As String) As String()
            Dim maxsize As Integer = 500
            While True
                Dim bytes As Byte() = New Byte(maxsize - 1) {}
                Dim size As Integer = GetPrivateProfileString(0, "", "", bytes, maxsize, INIPath)
                If size < maxsize - 2 Then
                    Dim Selected As String = Encoding.ASCII.GetString(bytes, 0, size - (If(size > 0, 1, 0)))
                    Return Selected.Split(New Char() {ControlChars.NullChar})
                End If
                maxsize *= 2
            End While
            Return Nothing
        End Function
     
        'Retourne toutes les clés existantes d'une section spécifiée
        Public Shared Function INIEntryNames(ByVal INIPath As String, ByVal section As String) As String()
            Dim maxsize As Integer = 500
            While True
                Dim bytes As Byte() = New Byte(maxsize - 1) {}
                Dim size As Integer = GetPrivateProfileString(section, 0, "", bytes, maxsize, INIPath)
                If size < maxsize - 2 Then
                    Dim entries As String = Encoding.ASCII.GetString(bytes, 0, size - (If(size > 0, 1, 0)))
                    Return entries.Split(New Char() {ControlChars.NullChar})
                End If
                maxsize *= 2
            End While
            Return Nothing
        End Function
     
    #End Region
     
    End Class

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juillet 2015
    Messages : 17
    Par défaut
    Citation Envoyé par gghitman Voir le message
    Salut je voit plein d erreur Any ce sont des integer
    bref j ai une classe qui marche bien pour ca
    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
     
    'Public Class ToutPourFichierINI
     
    Imports System.Runtime.InteropServices
    Imports System.IO
    Imports System.Text
     
    Public Class ToutPourFichierINI
     
    #Region "Natives Methods"
     
        Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
        ByVal lpKeyName As String, ByVal lpDefault As String, _
        ByVal lpReturnedString As String, ByVal nSize As Int32, _
        ByVal lpFileName As String) As Int32
     
        <DllImport("kernel32")> _
        Private Shared Function GetPrivateProfileString(ByVal Section As String, ByVal Key As Integer, ByVal Value As String, <MarshalAs(UnmanagedType.LPArray)> ByVal Result As Byte(), ByVal Size As Integer, ByVal FileName As String) As Integer
        End Function
     
        <DllImport("kernel32")> _
        Private Shared Function GetPrivateProfileString(ByVal Section As Integer, ByVal Key As String, ByVal Value As String, <MarshalAs(UnmanagedType.LPArray)> ByVal Result As Byte(), ByVal Size As Integer, ByVal FileName As String) As Integer
        End Function
     
        Private Declare Unicode Function WritePrivateProfileString Lib "kernel32" _
        Alias "WritePrivateProfileStringW" (ByVal lpApplicationName As String, _
        ByVal lpKeyName As String, ByVal lpString As String, _
        ByVal lpFileName As String) As Int32
     
    #End Region
     
    #Region "Méthodes publiques"
     
        'Suppression de section
        Public Shared Sub INIDelete(ByVal INIPath As String, ByVal SectionName As String)
            Dim lpKeyName As String = Nothing
            Dim lpString As String = Nothing
            WritePrivateProfileString(SectionName, lpKeyName, lpString, INIPath)
        End Sub
     
        'Suppression de clé
        Public Shared Sub INIDelete(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String)
            Dim lpString As String = Nothing
            WritePrivateProfileString(SectionName, KeyName, lpString, INIPath)
        End Sub
     
        'Lecture sections (Clés/Valeurs)
        Public Shared Function INIRead(ByVal INIPath As String) As String
            Return INIRead(INIPath, Nothing, Nothing, "")
        End Function
     
        'Lecture Clés/Valeurs d'une section spécifiée
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String) As String
            Return INIRead(INIPath, SectionName, Nothing, "")
        End Function
     
        'Lecture Valeur d'une section et clé spécifiée
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String) As String
            Return INIRead(INIPath, SectionName, KeyName, "")
        End Function
     
        'Lecture Valeur d'une section et clé spécifiée (retourne vaneur par défaut si elle n'existe pas)
        Public Shared Function INIRead(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String, ByVal DefaultValue As String) As String
            Dim lpReturnedString As String = Strings.Space(2048)
            Dim length As Integer = GetPrivateProfileString(SectionName, KeyName, DefaultValue, lpReturnedString, lpReturnedString.Length, INIPath)
            If length > 0 Then
                Return lpReturnedString.Substring(0, length)
            End If
            Return ""
        End Function
     
        'Ecriture Clés/Valeurs dans une section spécifiée
        Public Shared Sub INIWrite(ByVal INIPath As String, ByVal SectionName As String, ByVal KeyName As String, ByVal TheValue As String)
            WritePrivateProfileString(SectionName, KeyName, TheValue, INIPath)
        End Sub
     
        'Détecte si section spécifiée existe
        Public Shared Function INISectionExist(ByVal INIPath As String, ByVal SectionName As String) As Boolean
            For Each sect In INISectionNames(INIPath)
                If sect.ToLower = SectionName.ToLower Then
                    Return True
                End If
            Next
            Return False
        End Function
     
        'Retourne tous les noms des sections existantes dans le fichier de configuration
        Public Shared Function INISectionNames(ByVal INIPath As String) As String()
            Dim maxsize As Integer = 500
            While True
                Dim bytes As Byte() = New Byte(maxsize - 1) {}
                Dim size As Integer = GetPrivateProfileString(0, "", "", bytes, maxsize, INIPath)
                If size < maxsize - 2 Then
                    Dim Selected As String = Encoding.ASCII.GetString(bytes, 0, size - (If(size > 0, 1, 0)))
                    Return Selected.Split(New Char() {ControlChars.NullChar})
                End If
                maxsize *= 2
            End While
            Return Nothing
        End Function
     
        'Retourne toutes les clés existantes d'une section spécifiée
        Public Shared Function INIEntryNames(ByVal INIPath As String, ByVal section As String) As String()
            Dim maxsize As Integer = 500
            While True
                Dim bytes As Byte() = New Byte(maxsize - 1) {}
                Dim size As Integer = GetPrivateProfileString(section, 0, "", bytes, maxsize, INIPath)
                If size < maxsize - 2 Then
                    Dim entries As String = Encoding.ASCII.GetString(bytes, 0, size - (If(size > 0, 1, 0)))
                    Return entries.Split(New Char() {ControlChars.NullChar})
                End If
                maxsize *= 2
            End While
            Return Nothing
        End Function
     
    #End Region
     
    End Class
    Salut gghitman et merci pour la reponse

    comment appeler la fonction lire via un bouton et afficher la valeur d'un clé dans un textbox, ainsi comment modifier la valeur d'un clé

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    @gghitman : crois-tu aider une personne en lui fournissant un snippet alors qu'en lisant son post on se rends compte qu il ne connait même pas les types de variables et surtout il tente déjà d'utiliser un snippet qu il ne comprends pas !!
    Je t'assure que tu ne lui rends pas service, de cette manière tu feras de lui un membre fidèle pour lequel le gout de l'effort prendra son sens dès lors qu il obtiendra une réponse de nous autres sans avoir usé un minimum de sa matière grise.....

    Citation Envoyé par kameth Voir le message
    .......
    comment appeler la fonction lire via un bouton et afficher la valeur d'un clé dans un textbox, ainsi comment modifier la valeur d'un clé
    ca fait beaucoup de questions ...... :

    Il serait tps de prendre le taureau par les cornes et de commencer par ton apprentissage vbnet grace a l'ouvrage de Mr Philippe Lasserre : http://plasserre.developpez.com/cours/vb-net/

    A savoir :

    - variables et types de variables
    - les méthodes (fonctions et procédures, signature et arguments)
    - les controles
    - les gestionnaires d'évènements

    a+ et bonne lecture.

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Juillet 2015
    Messages : 17
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    @gghitman : crois-tu aider une personne en lui fournissant un snippet alors qu'en lisant son post on se rends compte qu il ne connait même pas les types de variables et surtout il tente déjà d'utiliser un snippet qu il ne comprends pas !!
    Je t'assure que tu ne lui rends pas service, de cette manière tu feras de lui un membre fidèle pour lequel le gout de l'effort prendra son sens dès lors qu il obtiendra une réponse de nous autres sans avoir usé un minimum de sa matière grise.....
    Bonjour wallace1; Bonjour à tous
    tu a raison merci pour l'ouvrage de Mr Philippe Lasserre

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Bonjour

    Je dépoussière un peu le sujet qui date de 2015.

    La classe marche super bien, et je l'utilise souvent, mais j'ai un petit soucis sur l'encodage qui ne ressort pas les "Accent" é, è, à ... ...

    j'ai essayé en modifiant les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Selected As String = Encoding.ASCII.GetString(bytes, 0, size - (If(size > 0, 1, 0)))
    par

    Encoding.UT7 / UT8 / Defaut, mais cela ne change pas, il ne charge pas les accents.

    Une petite idée ???

Discussions similaires

  1. ecrire dans fichier.ini
    Par benhsaien dans le forum VBScript
    Réponses: 3
    Dernier message: 20/03/2012, 13h09
  2. lire et ecrire dans fichier json
    Par elj_slim dans le forum NetBeans
    Réponses: 0
    Dernier message: 17/08/2010, 13h04
  3. Lire et ecrire dans fichier excel en c++
    Par FidoDido® dans le forum C++
    Réponses: 8
    Dernier message: 09/07/2007, 09h16
  4. lire et ecrire dans les fichiers INI sans MFC
    Par skeltryx dans le forum C++/CLI
    Réponses: 10
    Dernier message: 24/04/2007, 09h03
  5. [C#] Comment lire/ecrire dans fichier ini ?
    Par meli0207 dans le forum C#
    Réponses: 2
    Dernier message: 20/03/2006, 16h53

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