PsYKrO
Messages postés53Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention 3 mai 2005
-
4 août 2004 à 11:10
PsYKrO
Messages postés53Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention 3 mai 2005
-
5 août 2004 à 13:07
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 4 août 2004 à 12:50
Salut,
Je suis OK avec crenaud76, il vaut mieux utiliser GetPrivateProfileString surtout si tu connais le nom des clés.
Mais, ton GetPrivateProfileSection() m'a rappelé un truc que je m'étais amusé à coder, je ne sais plus pour quelle occasion. Ca devait permettre de lire un fichier ini sans connaitre ni les sections ni les clés.
Je te livre le bout qui lit le nom des clés et leur valeur. Pour tester, une form avec une listbox (list1).
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Sub Form_Load()
Dim NomSection As String
Dim NomFicINI As String
Dim Buffer As String
Dim NbCar As Integer
Dim i As Integer
Dim ListeCle() As String
Dim DecoupageCle() As String
NomSection = "Projet1"
NomFicINI = "c:\test.ini"
' Lecture du nombre de caractères de la section (32767 c le max)
Buffer = String(32767, 0)
NbCar = GetPrivateProfileSection(NomSection, Buffer, Len(Buffer), NomFicINI)
' Lecture des clés de la section
Buffer = String(NbCar + 1, 0)
NbCar = GetPrivateProfileSection(NomSection, Buffer, Len(Buffer), NomFicINI)
' Séparation des différentes clés
ListeCle = Split(Buffer, Chr(0))
For i = 0 To UBound(ListeCle) - 2
DecoupageCle = Split(ListeCle(i), "=")
List1.AddItem "Clé : " & DecoupageCle(0) & " - Valeur : " & DecoupageCle(1)
Next
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 août 2004 à 11:24
Heu !! A ma connaissance, GetPrivateProfileString te retourne un buffer ou les clés sont séparées par un Nullchar, pas par un espace !!! Donc tu devrais pas avoir de souci en faisant ton Split sur vbNullChar, plutôt que sur un espace
De toute facon si tu veux juste lire une clé, tu peux utiliser GetPrivateProfileString() plutot que GetPrivateProfileSection()!
Ex de code (de mémoire car j'ai pas de VB sous la main)
Dim Buffer as String,Ret as String,Valeur as String
Buffer = String$(255,vbNullChar)
Ret = GetPrivateProfileString("LaSection","LaCle","",Buffer,255,"Fichier.ini")
Valeur = Left$(Buffer,Ret)
PsYKrO
Messages postés53Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention 3 mai 2005 4 août 2004 à 15:54
Bon je vais essayé demain au boulot car la je suis sur un autre programme au boulot qui est a 99% d'être terminé.... je veux juste répondre a CanisLupus :
"Je suis OK avec crenaud76, il vaut mieux utiliser GetPrivateProfileString surtout si tu connais le nom des clés."
Comme j'ai ecrit, les noms des variables varient:
Ex:
Repertoire1
Disque1
Ours
.....
sinon j'aurai fait ce que tu m'a dit mais demain j'essayerai avec Nullchar ( je pesnai que c'etait pareil qu'un espace) et je pense très fortement que le problème devrait ce résoudre...
PsYKrO
Messages postés53Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention 3 mai 2005 4 août 2004 à 15:56
mmmm quand je dit "varient" c'est à dire que je ne pas connaitre ni le nombre ni le nom...car un jour ca peut etre tel repertoire dans tel clé et un autre jour ca va etre peut etre un autre repertoire etc....