Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fichier ".ini"

4 réponses
Avatar
Christian Delaunay
Bonjour,

Connaissant le nom complet d'un fichier ".ini", je cherche un moyen pour
remonter dans une liste,structure,... toutes les sections de ce fichier
et connaissant une section, tous ses entrées ( clé , valeur ).

Y a t il des objets VB pour traiter des fichiers ".ini" ? si non, qqun
pourrait il partager le code qui le permet ?

merci par avance
Christian

ps : j'utilise VB6, s'il faut passer à une version supérieure, je peux voir
comment y passer

4 réponses

Avatar
Adam Pietrasiewicz
W sobotê 06-marca-2004 o godzinie 11:04:13 Christian Delaunay
napisa³/a


Bonjour,



Connaissant le nom complet d'un fichier ".ini", je cherche un moyen pour
remonter dans une liste,structure,... toutes les sections de ce fichier
et connaissant une section, tous ses entrées ( clé , valeur ).



Y a t il des objets VB pour traiter des fichiers ".ini" ? si non, qqun
pourrait il partager le code qui le permet ?



Je ne connais pas d'objets speciaux pour traiter les fichiers ini. Il
y a des API (GetPrivateProfileString,
GetPrivateProfileSection,WritePrivateProfileString.... etc) qui
permettent de gerer ces fichiers et ca marche a merveille.

Je pense qu'en utilisant ces APIs on peut creer une biblioteque pour
une gestion plus complete des fichiers ini, mais je ne sais pas s'il y
en a une de disponible sur le net.


--
Pozdrawiam
Adam Pietrasiewicz
Avatar
François Picalausa
Bonjour/Soir,

Voir la faq:
http://faq.vb.free.fr/index.php?question2

Cette correction:
http://groups.google.com/groups?selm=ewJcVWOXDHA.208%40tk2msftngp13.phx.gbl

Pour supprimer une entrée:
http://groups.google.com/groups?selm=eKKkTeA3DHA.1652%40TK2MSFTNGP11.phx.gbl

Pour énumérer toutes les sections d'un fichier ini:
l'API GetPrivateProfileSectionNames

Pour énumérer toutes les valeurs:
GetPrivateProfileString avec comme lpKeyName vbNullstring

<quote src=msdn>
GetPrivateProfileString
lpKeyName
[in] Pointer to the null-terminated string specifying the name of the key
whose associated string is to be retrieved. If this parameter is NULL, all
key names in the section specified by the lpAppName parameter are copied to
the buffer specified by the lpReturnedString parameter.
</quote>

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Christian Delaunay" a écrit dans le
message de news:c2c7me$rd3$
Bonjour,

Connaissant le nom complet d'un fichier ".ini", je cherche un moyen
pour remonter dans une liste,structure,... toutes les sections de ce
fichier
et connaissant une section, tous ses entrées ( clé , valeur ).

Y a t il des objets VB pour traiter des fichiers ".ini" ? si non, qqun
pourrait il partager le code qui le permet ?

merci par avance
Christian

ps : j'utilise VB6, s'il faut passer à une version supérieure, je
peux voir comment y passer


Avatar
François Picalausa
Bonjour/soir,

Pour les deux dernières méthodes, voici un bout de code:
'Sur une form avec deux listbox, list1 et list2
Option Explicit

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

Private Declare Function GetPrivateProfileString _
Lib "kernel32" _
Alias "GetPrivateProfileStringA" _
( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String _
) _
As Long

Public Function GetIniKeys(FileName As String, Section As String) As String
Dim ReturnCode As Long, bContinue As Boolean, buffersize As Long

bContinue = True
buffersize = 256

Do While bContinue
GetIniKeys = String$(buffersize, vbNullChar)
ReturnCode = GetPrivateProfileString( _
Section, _
ByVal vbNullString, _
"", _
GetIniKeys, _
buffersize, _
FileName _
)

'If either lpAppName or lpKeyName is NULL and the
'supplied destination buffer is too small to hold
'all the strings, the last string is truncated and
'followed by two null characters. In this case,
'the return value is equal to nSize minus two.

If ReturnCode = buffersize - 2 Then 'buffer trop court
buffersize = buffersize + 256 'incrémente par pas de 256
Else
If ReturnCode = 0 Then
GetIniKeys = ""
Else
GetIniKeys = Left$(GetIniKeys, ReturnCode - 1)
End If
bContinue = False
End If
Loop
End Function

Public Function GetIniSections2(FileName As String) As String
Dim ReturnCode As Long, bContinue As Boolean, buffersize As Long

bContinue = True
buffersize = 256

Do While bContinue
GetIniSections2 = String$(buffersize, vbNullChar)
ReturnCode = GetPrivateProfileString( _
ByVal vbNullString, _
ByVal vbNullString, _
"", _
GetIniSections2, _
buffersize, _
FileName _
)

'If either lpAppName or lpKeyName is NULL and the
'supplied destination buffer is too small to hold
'all the strings, the last string is truncated and
'followed by two null characters. In this case,
'the return value is equal to nSize minus two.

If ReturnCode = buffersize - 2 Then 'buffer trop court
buffersize = buffersize + 256 'incrémente par pas de 256
Else
If ReturnCode = 0 Then
GetIniSections2 = ""
Else
GetIniSections2 = Left$(GetIniSections2, ReturnCode - 1)
End If
bContinue = False
End If
Loop
End Function
Private Function GetIniSections(strFileName As String) As String
Dim ReturnCode As Long, bContinue As Boolean, buffersize As Long

bContinue = True
buffersize = 256

Do While bContinue
IniGetSections = String$(buffersize, vbNullChar)
ReturnCode = GetPrivateProfileSectionNames( _
IniGetSections, _
buffersize, _
strFileName _
)

'The return value specifies the number of characters
'copied to the specified buffer, not including the
'terminating null character. If the buffer is not large
'enough to contain all the section names associated
'with the specified initialization file, the return
'value is equal to the size specified by nSize minus two.

If ReturnCode = buffersize - 2 Then 'buffer trop court
buffersize = buffersize + 256 'incrémente par pas de 256
Else
'on vire les caractères en trop
If ReturnCode = 0 Then
IniGetSections = ""
Else
IniGetSections = Left$(GetIniSections2, ReturnCode - 1)
End If
bContinue = False
End If
Loop
End Function

Private Sub Form_Load()
Dim strSections() As String, i As Long
strSections = Split(GetIniSections2("win.ini"), vbNullChar)

For i = LBound(strSections, 1) To UBound(strSections, 1)
List1.AddItem strSections(i)
Next
End Sub

Private Sub List1_Click()
If List1.ListIndex > -1 Then
Dim strKeys() As String, i As Long
strKeys = Split(GetIniKeys("win.ini", List1.Text), vbNullChar)

List2.Clear
For i = LBound(strKeys, 1) To UBound(strKeys, 1)
List2.AddItem strKeys(i)
Next
End If
End Sub

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"François Picalausa" a écrit dans le message de
news:
Bonjour/Soir,
Pour énumérer toutes les sections d'un fichier ini:
l'API GetPrivateProfileSectionNames

Pour énumérer toutes les valeurs:
GetPrivateProfileString avec comme lpKeyName vbNullstring

<quote src=msdn>
GetPrivateProfileString
lpKeyName
[in] Pointer to the null-terminated string specifying the name of the
key whose associated string is to be retrieved. If this parameter is
NULL, all key names in the section specified by the lpAppName
parameter are copied to the buffer specified by the lpReturnedString
parameter. </quote>


"Christian Delaunay" a écrit dans le
message de news:c2c7me$rd3$
Bonjour,

Connaissant le nom complet d'un fichier ".ini", je cherche un moyen
pour remonter dans une liste,structure,... toutes les sections de ce
fichier
et connaissant une section, tous ses entrées ( clé , valeur ).

Y a t il des objets VB pour traiter des fichiers ".ini" ? si non,
qqun pourrait il partager le code qui le permet ?

merci par avance
Christian

ps : j'utilise VB6, s'il faut passer à une version supérieure, je
peux voir comment y passer




Avatar
Christian Delaunay
merci pour ta réponse
Christian


"Adam Pietrasiewicz" a écrit dans le message de news:



W sobotê 06-marca-2004 o godzinie 11:04:13 Christian Delaunay
napisa³/a

>
>Bonjour,

>Connaissant le nom complet d'un fichier ".ini", je cherche un moyen pour
>remonter dans une liste,structure,... toutes les sections de ce fichier
>et connaissant une section, tous ses entrées ( clé , valeur ).

>Y a t il des objets VB pour traiter des fichiers ".ini" ? si non, qqun
>pourrait il partager le code qui le permet ?

Je ne connais pas d'objets speciaux pour traiter les fichiers ini. Il
y a des API (GetPrivateProfileString,
GetPrivateProfileSection,WritePrivateProfileString.... etc) qui
permettent de gerer ces fichiers et ca marche a merveille.

Je pense qu'en utilisant ces APIs on peut creer une biblioteque pour
une gestion plus complete des fichiers ini, mais je ne sais pas s'il y
en a une de disponible sur le net.


--
Pozdrawiam
Adam Pietrasiewicz