Les ini en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 703 fois - Téléchargée 36 fois

Contenu du snippet

Je sais que cette source existe déjà sur ce site mais je trouve un module plus pratique à utiliser. C'est pourquoi je la poste.

J'espère qu'elle pourra vous être utile a vous aussi.
a+
SupraDolph.

Source / Exemple :


Module ModINI
    'Nom du fichier INI
    Dim Fichier As String = Application.StartupPath & "\Backup.ini"
    'Constante
    Const MAX_ENTRY As Integer = 32768
#Region "Lire INI"
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
    '   Cette API permet de lire des fichiers d'initialisations. La fonction retourne 0 si la lecture du fichier d'initialisation a échoué, sinon elle retourne 1. 
    'lpApplicationName définit le nom de la section, 
    'lpKeyName définit le nom de la clef, 
    'lpDefault retourne la valeur par défaut si la clef n'est pas définie, 
    'lpReturnedString contient la valeur de la clef si elle existe sinon elle contient la valeur lpDefault, 
    'nSize est la taille de la variable lpReturnedString en octet, 
    'lpFileName définit le nom du fichier d'initialisation. 
    Function LireINI(ByVal Entete As String, ByVal Variable As String) As String
        Dim defval As String = ""
        Try
            Dim StrBuild As New System.Text.StringBuilder(MAX_ENTRY)
            Dim Ret As Integer = GetPrivateProfileString(Entete, Variable, defval, StrBuild, MAX_ENTRY, Fichier)
            Return StrBuild.ToString
        Catch
            Return defval
        End Try
    End Function
#End Region

#Region "Ecrire INI"
    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
    '   Cette API permet de créer ou de modifier vos propres fichiers d'initialisations sans se soucier des détails (par exemple... la gestion des fichiers), si le fichier n'existe pas il est créé, sinon il est modifié. La fonction retourne 0 si la création ou la modification du fichier d'initialisation a échoué, sinon elle retourne 1. 
    'lpApplicationName définit le nom de la section, 
    'lpKeyName définit le nom de la clef, 
    'lpString définit la valeur à ajouter, 
    'lpFileName définit le nom du fichier d'initialisation. 
    Function EcrireINI(ByVal Entete As String, ByVal Variable As String, ByVal Valeur As String)
        WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
    End Function
#End Region

#Region "Supprime INI"
    Function SupprimeINI(ByVal Entete As String, Optional ByVal Variable As String = Nothing)
        WritePrivateProfileString(Entete, Variable, vbNullString, Fichier)
    End Function
#End Region

#Region "Sections INI"
    Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
    Function SectionsINI() As ArrayList
        SectionsINI = New ArrayList
        Dim Buffer(MAX_ENTRY) As Byte
        Dim BuffStr As String
        Dim PrevPos As Integer = 0
        Dim Length As Integer
        Try
            Length = GetPrivateProfileSectionNames(Buffer, MAX_ENTRY, Fichier)
        Catch
            Exit Function
        End Try
        Dim ASCII As New System.Text.ASCIIEncoding
        If Length > 0 Then
            BuffStr = ASCII.GetString(Buffer)
            Length = 0
            PrevPos = -1
            Do
                Length = BuffStr.IndexOf(ControlChars.NullChar, PrevPos + 1)
                If Length - PrevPos = 1 OrElse Length = -1 Then Exit Do
                Try
                    SectionsINI.Add(BuffStr.Substring(PrevPos + 1, Length - PrevPos))
                Catch
                End Try
                PrevPos = Length
            Loop
        End If
    End Function
#End Region
End Module

Conclusion :


Si quelqu'un laisse un commentaire, qu'il parle du code et NON de mon orthographe merci.
Pour ceux qui ne comprènent pas pourquoi je laisse ce message :
cf : Ma source précédente Backup CD's.
http://www.vbfrance.com/article.aspx?Val=9475

A voir également

Ajouter un commentaire

Commentaires

dgreg60
Messages postés
11
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
6 août 2015
-
Salut,

Merci pour cette source : Claire, efficace et bien commenté.

Je me suis permis de la compiler en DLL en passant en paramètre le non du fichier INI.

Je publis la sources de la DLL.

Encore une fois merci,
LimDulLeNecromancien
Messages postés
6
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2008
-
Merci beaucoup.
Cela fonctionne parfaitement et j'ai même pu adapter le truc pour pouvoir faire une application multi-langues avec des fichiers de langue .lng forgé comme des fichiers .ini

Merci
Merci.
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
Tu ne trouves pas de boucle dans ce programme et c'est normal, car il utilise des API Windows.
En fait, les boucles se trouvent dans une classe complilée (kernel32.dll). Cette classe compiliée contient des méthodes dont GetPrivateProfileStringA pour la lecture par exemple.(pour plus d'informations : http://msdn.microsoft.com/fr-fr/library/ms724353(en-us,VS.85).aspx)
Ce dont tu as besoin pour utiliser ce programme.
Insère le programme dans un nouveau module nommé ModINI.

Pour écrire dans un fichier INI :
Call EcrireINI("Menu", "Option", "1")

Cela va créer un fichier "Backup.ini" à la racine de ton projet contenant :
>>>> BOF <<<<
[Menu]
Option=1
>>>> EOF <<<<

Pour lire la valeur :
MsgBox LireINI("Menu", "Option") 'Affiche 1

Pour lire les en-têtes de section :
Dim tableau As ArrayList
tableau = SectionsINI()
MsgBox tableau(0) 'Affiche Menu

Pour supprimer une variable :
Call SupprimeINI("Menu", "Option")

Pour supprimer une section :
Call SupprimeINI("Menu")
LimDulLeNecromancien
Messages postés
6
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2008
-
Bonjour.

Je débute totalement en programmation VB
(je code un peut en php)

J'ai quelques questions.
Tout d'abord où dois-je insérer ce module dans on programme ?

Ensuite, je ne parviens pas à comprendre ce que fait chaque ligne en détail.
Ca serai trop long je pense qu'on m'explique terme par terme mais je bloque sur un truc.

Je ne vois pas de boucle.

Comment dans un ini de plusieurs lignes contenant plusieurs paramètres ce programme fonctionne ?
Comment transforme-t-il une ligne dans le genre:
nom_du_parametre=valeur
en une variable nommée nom_du_parametre et ayant la valeur du ini ?
Et cela pour chaque ligne du fichier ini ?
SupraDolph
Messages postés
196
Date d'inscription
samedi 12 janvier 2002
Statut
Membre
Dernière intervention
1 septembre 2008
1 -
J'avais moi aussi fait ma petite version avec la possibilité de changer d'ini selon mes besoins.
Pour le app.settings c'est vrai que je n'avais pas encore fait attention au fait qu'il était présent en vb mais il faut dire que j'ai vraiment ralenti mes déveleppements en se moment par manque de temps.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.