Incrementer un Item dans un fichier Ini.

Résolu
Quatrelator Messages postés 10 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004 - 16 nov. 2004 à 18:12
Quatrelator Messages postés 10 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004 - 17 nov. 2004 à 10:18
Bonjour,

Dans le fichier ini suivant:

[azertyui]
Item01=01
Item02=02
[qsdfghjk]
Item01=01
Item02=02
[wxcvbn]
unknow value

Comment puis-je savoir quel est le dernier numéro d'item?

5 réponses

Quatrelator Messages postés 10 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 18 novembre 2004
17 nov. 2004 à 10:18
Merci beaucoup cela fonctionne.

Je souhaiterais maintenant savoir comment je peux ajouter une ligne par section avec un ItemXX+1=Avec une valeur.

J'utilise déja le scripte suivant où j'ajoute un Item999=avec une valeur je souhaiterais que le 999 soit remplacer par le numéro d'item+1 trouver par le script précédent.

Voici mon script d'ajout de ligne:

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

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long

Private Function EcritDansFichierIni(Section As String, Cle As String, _
Valeur As String, Fichier As String) As Long
EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
End Function

Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _
Optional ValeurParDefaut As String = "") As String

Dim strReturn As String
strReturn = String(255, 0)
GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)

End Function

Private Sub Form_Load()
EcritDansFichierIni "Address", "Item999", "128.1.6.68", "d:\saplogon.ini"
EcritDansFichierIni "Codepage", "Item999", "1100", "d:\saplogon.ini"
EcritDansFichierIni "CodepageIndex", "Item999", "-1", "d:\saplogon.ini"
EcritDansFichierIni "Configuration", "Item999", "32", "d:\saplogon.ini"
EcritDansFichierIni "Description", "Item999", "VP3_NEW [production]", "d:\saplogon.ini"
EcritDansFichierIni "LowSpeedConnection", "Item999", "0", "d:\saplogon.ini"
EcritDansFichierIni "MSSrvName", "Item999", "vuspr3b1.val.fr.thav.thales", "d:\saplogon.ini"
EcritDansFichierIni "MSSrvPort", "Item999", "sapmsVP3", "d:\saplogon.ini"
EcritDansFichierIni "MSSysName", "Item999", "VP3", "d:\saplogon.ini"
EcritDansFichierIni "Origin", "Item999", "MS_SEL_GROUPS", "d:\saplogon.ini"
EcritDansFichierIni "Router", "Item999", "", "d:\saplogon.ini"
EcritDansFichierIni "Router2", "Item999", "", "d:\saplogon.ini"
EcritDansFichierIni "RouterChoice", "Item999", "0", "d:\saplogon.ini"
EcritDansFichierIni "Server", "Item999", "production", "d:\saplogon.ini"
EcritDansFichierIni "SessManKey", "Item999", "26", "d:\saplogon.ini"
EcritDansFichierIni "SncChoice", "Item999", "-1", "d:\saplogon.ini"
EcritDansFichierIni "SncName", "Item999", "", "d:\saplogon.ini"
EcritDansFichierIni "System", "Item999", "3", "d:\saplogon.ini"
EcritDansFichierIni "Utf8Off", "Item999", "0", "d:\saplogon.ini"
End Sub
3
Utilisateur anonyme
16 nov. 2004 à 18:36
salut alors:

open "c:\fichier.ini" for input as #1
do while not eof(1)
line input #1, a$
loop
close

'a$ = au dernier...

A+

A.C.I.V.E SARL
Automatismes Conception Informatique Vidéo Electronique
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2004 à 20:34
Salut, je te conseil de détecté le changement de partie, c'est à dire les parties : [azertyui], etc...

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
16 nov. 2004 à 20:46
acive > Bah non, avec ton code, il récupérera "[wxcvbn]" !

Si tu est certain que tes items ne contiennent pas de crochets "[" "]", alors tu peux t'aider de celà.

Private Function dernierItemDeLaCle(sCle As String) As Long
Dim numFile As Long
Dim sTemp As String
Dim tablo() As String
Dim CleATrouver As String
Dim onCompteLesItems As Boolean
Dim dernier_item As Long
Dim temp_item As Long

    temp_item = 0
    dernier_item = 0
    onCompteLesItems = False
    CleATrouver = "[" & sCle & "]"
    numFile = FreeFile
    Open "C:\toto.txt" For Input As #numFile
        While Not EOF(numFile)
            Line Input #numFile, sTemp
            If onCompteLesItems Then
                tablo = Split(sTemp, "=", , vbBinaryCompare)
                temp_item = Val(Right$(tablo(LBound(tablo)), Len(tablo(LBound(tablo))) - 4))
                If temp_item > dernier_item Then
                    dernier_item = temp_item
                End If
                If InStr(1, sTemp, "[", vbBinaryCompare) > 0 Then
                    onCompteLesItems = False
                End If
            End If
            If sTemp = CleATrouver Then
                onCompteLesItems = True
            End If
        Wend
    Close #numFile
dernierItemDeLaCle = dernier_item
End Function

Private Sub Command1_Click()
    MsgBox dernierItemDeLaCle("qsdfghjk")
End Sub



Ceci ne fonctionne que si tes items se nomment comme ceci :

Item01
Item1245467
Item00056

De plus, ce code fonctionne aussi si les items ne sont pas rangés dans l'ordre croissant, ou s'il y a des trous entre les items (du genre Item01, Item02, Item07, Item08, ...)

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
16 nov. 2004 à 20:48
Note : J'ai appelé mon fichier ini "C:\toto.txt". N'oublies pas de le changer pour que le code fonctionne chez toi !!

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
Rejoignez-nous