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.
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.