Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ENUMÈRER LES SECTIONS D'UN FICHIER .INI


Information sur la source

Catégorie :API Niveau : Débutant Date de création : 03/01/2003 Date de mise à jour : 18/01/2005 19:33:40 Vu / téléchargé: 2 711 / 202

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

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

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

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

18 janvier 2005 19:33:41 :
Ajout de la lecture des données des sections

Commentaires et avis

signaler à un administrateur
Commentaire de matrey le 03/01/2003 23:01:26

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

signaler à un administrateur
Commentaire de Alan71 le 03/01/2003 23:14:29

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

signaler à un administrateur
Commentaire de LordBob le 04/01/2003 00:33:49

cool j'adore ta source, elle va pouvoir me servir... merci...

signaler à un administrateur
Commentaire de dionysos6868 le 04/01/2005 21:22:42

Super ta source je le cherchais merci beaucoup

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

Merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.