Enumèrer les sections d'un fichier .ini

Description

Ben, il liste les sections d'un Fichier .INI. Section = Les texte en crochet (ex : "[Windows]") & donne les données de toutes les sections sous la forme "Key=Value"

Source / Exemple :


Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub command2_click()
    ' cette sub vient de ApiGuide (www.allapi.net)
    ' +commentée
    ' +bien retapée
    Dim szBuf As String, Length As Integer
    Dim SectionArr() As String, m As Integer

    ' On créer un buffer
    szBuf = String$(255, 0)
    ' On appelle l'api pour le remplir des sections du fichier .INI
    ' Les sections sont séparer par chr(0)
    ' La valeur retourné (length) est la valeur
    Length = GetPrivateProfileSectionNames(szBuf, 255, Text1.Text)
    ' On extrait la valeur de la chaine remplit(le reste, c'est du chr(0))
    szBuf = Left$(szBuf, Length)
    ' On découpe la chaine dans un tableau
    SectionArr = Split(szBuf, vbNullChar)
    ' Un for qui liste toute les sections
    For i& = 0 To UBound(SectionArr)
	' SectionArr(i&) est une section
	debug.print SectionArr(i&)
                ShowKeyValue SectionArr(i&), Text1.Text
    Next m
End Sub

'Et en bonus
Sub ShowKeyValue(section As String, file  As String)
     'Je ai fais moi-même cette sub
     ' Merci encore à ApiGuide

                ' nBufLength définit la longueur maxi des données lues (mettez plus pour un gros fichier)
                ' Win95&+ Maxi : 2^16
                ' WinNT&+ Maxi : 2^32
	Dim nBufLength as Long
	nBufLength = 255
	Dim szBuf As String * nBufLength
	Dim count as Long

	count= GetPrivateProfileSection(section, szBuf, nBufLength, file)
	dim arKeyValue() as String
	arKeyValue = Split(Left(szBuf, count), count)
	' arKeyValue contient des strings sous la forme "Key=Value"
	
	For i& = 0 To UBound(arKeyValue)
                   'arKeyValue (i&)  est une entrée de la forme "Key=Value"
	   Debug.Print arKeyValue (i&) 
                Next 
End Sub

Conclusion :


Je déconseille cette méthode pour des gros fichiers (Buffer fixe + Split = grosse consomation mémoire)
Prenez plutôt une autre source de VBFrance(y'en a plein) pour lire directement le fichier.

J'ai retapé cette source sans VB6 mais avec le notepad (je suis passer comme beaucoup à C# depuis presque 2 ans)
Il risque d'avoir un gros tas d'erreurs.

Codes Sources

A voir également

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.