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
5 janv. 2009 à 19:59
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,
23 juin 2008 à 00:18
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.
19 juin 2008 à 22:07
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")
19 juin 2008 à 18:07
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 ?
25 juin 2007 à 14:31
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.