Enumèrer les sections d'un fichier .ini

Soyez le premier à donner votre avis sur cette source.

Vue 4 623 fois - Téléchargée 302 fois

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

Ajouter un commentaire

Commentaires

Messages postés
310
Date d'inscription
jeudi 4 septembre 2003
Statut
Membre
Dernière intervention
9 juin 2005

Super ta source je le cherchais merci beaucoup

une question pour avoir toute les variable d'une section on fait comment ???

Merci
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
cool j'adore ta source, elle va pouvoir me servir... merci...
Messages postés
530
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
13 juin 2004

Voici un exemple typique de code non-complet (mé C bien kan même)

Je n'es pas l'api-guide, malheureusement pour vous. Sachez tt de même k'il existe d'otres api pour les inis (récupérations directes de valeurs, etc...). Je vous renvoie donc a l'api-guide (pour celles-ci et tt les autres).

Ce sont des apis trop peu connus, et tré pratique. Même si son code n'est pas complet, il est necessaire de remercier vbmore et non pas de le blamer (7/10).
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004

ouais. connais déjà, mais apparemment c'était pas encore sur VBFrance... Pas mal...

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.