Soyez le premier à donner votre avis sur cette source.
Snippet vu 15 995 fois - Téléchargée 36 fois
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
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,
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.
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")
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 ?
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.