|
Trouver une ressource
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 !
LIRE ET ÉCRIRE DANS UN FICHIER INI
Information sur la source
Description
Ce source permet d'écrire d'extraire et de modifier les valeurs des variables contenues dans les fichiers ini. Ce code permet de lire les fichiers ini dont chaque ligne peut contenir des espaces non significatifs et effectue aussi quelques tests. En effet, si la variable ou la section est contenue dans un commentaire (ligne commençant par ";") alors elle est ignorée. Exemple : si l'on cherche la section [section], elle ne sera pas trouvée dans cette ligne : ; ceci est une ligne de commentaires contenant [section] De même, le fichier peut contenir des espaces, la lecture se fera quand même. Exemple : si l'on recherche la variable "variable", elle sera trouvée dans ces cas : variable=valeur variable=valeur variable =valeur variable = valeur Par contre, dans les cas ci-dessous, elle ne sera pas pris en compte : ; ceci est une ligne de commentaire contenant par hasard la chaine variable longvariable = valeur variables = valeur
Source
- Public Function GetFile(Filename As String)
- ' renvoie le contenu du fichier "filename" sous forme d'une seule chaine de caractères
- Dim a As Long
- a = FreeFile()
- Open Filename For Input As #a
- GetFile = Input(LOF(a), a)
- Close #a
- End Function
-
-
-
- Public Function GetFileExist(Filename As String) As Boolean
- ' renvoie true si le fichier "filename" existe et false sinon
- On Error GoTo Erreur
- FileLen (Filename)
- GetFileExist = True
- Exit Function
- Erreur:
- GetFileExist = False
- End Function
-
-
-
- Public Function simplifie(texte As String)
- ' supprime les retours à la ligne trop nombreux ( lorsqu'il y a 3 retours à la ligne,
- ' on n'en laisse que 2)
- Dim retour As String
- Dim l As String
- retour = Chr(13) & Chr(10)
- l = InStr(texte, retour & retour & retour)
- While l <> 0
- texte = Left(texte, l + 1) & Mid(texte, l + 4)
- l = InStr(texte, retour & retour & retour)
- Wend
- simplifie = texte
- End Function
-
-
-
- Public Function supprime(texte As String)
- 'supprime tous les retours à la ligne placés en fin de chaine
- Dim retour As String
- Dim l As String
- retour = Chr(13) & Chr(10)
- l = Mid(texte, Len(texte) - 1) = retour
- While l
- texte = Mid(texte, 1, Len(texte) - 2)
- l = Mid(texte, Len(texte) - 1) = retour
- Wend
- supprime = texte
- End Function
-
-
-
- Public Function SetFile(Filename As String, texte As String)
- ' écrit la chaine de caractère "texte" dans le fichier "filename" (écrase l'ancien)
- Dim a As Long
- a = FreeFile()
- Open Filename For Output As #a
- Print #a, supprime(simplifie(texte))
- Close #a
- End Function
-
-
-
- Public Function GetIni(Filename As String, Contener As String, Variable As String)
- 'renvoie la valeur de la variable "variable" placée dans le conteneur "contener"
- ' renvoie la chaine vide si la variable n'a pas été trouvé
- Dim test As Boolean, _
- t1 As Boolean, _
- t2 As Boolean, _
- ligne As String, _
- a As Long, _
- retour As String
- retour = Chr(13) & Chr(10)
- ' si le fichier n'existe pas
- If Not GetFileExist(Filename) Then
- GetIni = ""
- Exit Function
- End If
- ' ouvertur du fichier
- a = FreeFile()
- Open Filename For Input As #a
- ' recherche du conteneur
- test = True
- t2 = True
- While test
- If Not EOF(a) Then
- 'lecture de la ligne
- Line Input #a, ligne
- 'test si "[container]" est inclus en début de ligne
- ' (avec des espaces possible à sa gauche)
- t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
- End If
- test = (Not EOF(a)) And t2
- Wend
- ' si le conteneur n'a pas été trouvé
- If EOF(a) And t2 Then
- GetIni = ""
- Exit Function
- End If
- ' recherche la variable
- ligne = ""
- test = True
- t1 = True
- t2 = True
- While test
- If Not EOF(a) Then
- Line Input #a, ligne
- ' test si l'on n'a pas atteint le conteneur suivant
- t1 = Mid(Trim(ligne), 1, 1) <> "["
- ' test si la variable (suivant du symbole "=" ) est inclus dans la ligne courante
- t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
- Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
- End If
- test = (Not EOF(a)) And t1 And t2
- Wend
- If t2 Then
- GetIni = ""
- Else
- ' c'est le cas où la variable a été trouvé, on en extrait la valeur
- GetIni = Trim(Mid(ligne, InStr(ligne, "=")))
- End If
- End Function
-
-
- Public Function WriteIni(Filename As String, Contener As String, Variable As String, Value As String)
- ' ecriture de la valeur "valeur" de la variable "variable" dans la section "contener" et ce
- ' dans le fichier "filename". Si le fichier n'existe pas, on le crée,si la section
- ' n'existe pas, on la crée, si la variable n'existe pas, on la crée. Si la section et la
- ' variable existe alors on met à jour la valeur de la variable (écrasement de l'ancienne valeur)
-
- Dim Resultat As String, _
- test As Boolean, _
- t1 As Boolean, _
- t2 As Boolean, _
- ligne As String, _
- a As Long, _
- retour As String
- retour = Chr(13) & Chr(10)
- ' si le fichier n'existe pas, on le crée et on y met le container, la variable et sa valeur
- If Not GetFileExist(Filename) Then
- Call SetFile(Filename, "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value)
- Exit Function
- End If
- ' ouvertur du fichier
- a = FreeFile()
- Open Filename For Input As #a
- ' recherche du conteneur
- test = True
- t2 = True
- While test
- If Not EOF(a) Then
- 'lecture de la ligne
- Line Input #a, ligne
- 'test si "[container]" est inclus en début de ligne (avec des espaces possible à sa gauche)
- t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
- Resultat = Resultat & ligne & retour
- End If
- test = (Not EOF(a)) And t2
- Wend
- ' si le conteneur n'a pas été trouvé, on le crée ainsi que la variable et sa valeur
- If EOF(a) And t2 Then
- Close #a
- Call SetFile(Filename, Resultat & retour & "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value & retour)
- Exit Function
- End If
- ' recherche la variable
- ligne = ""
- test = True
- t1 = True
- t2 = True
- While test
- If Not EOF(a) Then
- Line Input #a, ligne
- t1 = Mid(Trim(ligne), 1, 1) <> "["
- t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
- Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
- If t1 And t2 Then
- Resultat = Resultat & ligne & retour
- End If
- End If
- test = (Not EOF(a)) And t1 And t2
- Wend
- If t2 Then
- 'la variable est absente, on la crée à la fin du conteneur (avant le suivant)
- Resultat = supprime(Resultat) & retour & Chr(32) & Variable & "=" & Value & retour & retour
- Resultat = Resultat & ligne & retour
- Else
- 'la variable est présente
- Resultat = Resultat & Mid(ligne, 1, InStr(ligne, "=")) & Chr(32) & Value & retour
- End If
- While Not EOF(a)
- Line Input #a, ligne
- Resultat = Resultat & ligne & retour
- Wend
- Close #a
- Call SetFile(Filename, Resultat)
- End Function
-
-
Public Function GetFile(Filename As String)
' renvoie le contenu du fichier "filename" sous forme d'une seule chaine de caractères
Dim a As Long
a = FreeFile()
Open Filename For Input As #a
GetFile = Input(LOF(a), a)
Close #a
End Function
Public Function GetFileExist(Filename As String) As Boolean
' renvoie true si le fichier "filename" existe et false sinon
On Error GoTo Erreur
FileLen (Filename)
GetFileExist = True
Exit Function
Erreur:
GetFileExist = False
End Function
Public Function simplifie(texte As String)
' supprime les retours à la ligne trop nombreux ( lorsqu'il y a 3 retours à la ligne,
' on n'en laisse que 2)
Dim retour As String
Dim l As String
retour = Chr(13) & Chr(10)
l = InStr(texte, retour & retour & retour)
While l <> 0
texte = Left(texte, l + 1) & Mid(texte, l + 4)
l = InStr(texte, retour & retour & retour)
Wend
simplifie = texte
End Function
Public Function supprime(texte As String)
'supprime tous les retours à la ligne placés en fin de chaine
Dim retour As String
Dim l As String
retour = Chr(13) & Chr(10)
l = Mid(texte, Len(texte) - 1) = retour
While l
texte = Mid(texte, 1, Len(texte) - 2)
l = Mid(texte, Len(texte) - 1) = retour
Wend
supprime = texte
End Function
Public Function SetFile(Filename As String, texte As String)
' écrit la chaine de caractère "texte" dans le fichier "filename" (écrase l'ancien)
Dim a As Long
a = FreeFile()
Open Filename For Output As #a
Print #a, supprime(simplifie(texte))
Close #a
End Function
Public Function GetIni(Filename As String, Contener As String, Variable As String)
'renvoie la valeur de la variable "variable" placée dans le conteneur "contener"
' renvoie la chaine vide si la variable n'a pas été trouvé
Dim test As Boolean, _
t1 As Boolean, _
t2 As Boolean, _
ligne As String, _
a As Long, _
retour As String
retour = Chr(13) & Chr(10)
' si le fichier n'existe pas
If Not GetFileExist(Filename) Then
GetIni = ""
Exit Function
End If
' ouvertur du fichier
a = FreeFile()
Open Filename For Input As #a
' recherche du conteneur
test = True
t2 = True
While test
If Not EOF(a) Then
'lecture de la ligne
Line Input #a, ligne
'test si "[container]" est inclus en début de ligne
' (avec des espaces possible à sa gauche)
t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
End If
test = (Not EOF(a)) And t2
Wend
' si le conteneur n'a pas été trouvé
If EOF(a) And t2 Then
GetIni = ""
Exit Function
End If
' recherche la variable
ligne = ""
test = True
t1 = True
t2 = True
While test
If Not EOF(a) Then
Line Input #a, ligne
' test si l'on n'a pas atteint le conteneur suivant
t1 = Mid(Trim(ligne), 1, 1) <> "["
' test si la variable (suivant du symbole "=" ) est inclus dans la ligne courante
t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
End If
test = (Not EOF(a)) And t1 And t2
Wend
If t2 Then
GetIni = ""
Else
' c'est le cas où la variable a été trouvé, on en extrait la valeur
GetIni = Trim(Mid(ligne, InStr(ligne, "=")))
End If
End Function
Public Function WriteIni(Filename As String, Contener As String, Variable As String, Value As String)
' ecriture de la valeur "valeur" de la variable "variable" dans la section "contener" et ce
' dans le fichier "filename". Si le fichier n'existe pas, on le crée,si la section
' n'existe pas, on la crée, si la variable n'existe pas, on la crée. Si la section et la
' variable existe alors on met à jour la valeur de la variable (écrasement de l'ancienne valeur)
Dim Resultat As String, _
test As Boolean, _
t1 As Boolean, _
t2 As Boolean, _
ligne As String, _
a As Long, _
retour As String
retour = Chr(13) & Chr(10)
' si le fichier n'existe pas, on le crée et on y met le container, la variable et sa valeur
If Not GetFileExist(Filename) Then
Call SetFile(Filename, "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value)
Exit Function
End If
' ouvertur du fichier
a = FreeFile()
Open Filename For Input As #a
' recherche du conteneur
test = True
t2 = True
While test
If Not EOF(a) Then
'lecture de la ligne
Line Input #a, ligne
'test si "[container]" est inclus en début de ligne (avec des espaces possible à sa gauche)
t2 = InStr(UCase(Trim(ligne)), UCase("[" & Contener & "]")) <> 1
Resultat = Resultat & ligne & retour
End If
test = (Not EOF(a)) And t2
Wend
' si le conteneur n'a pas été trouvé, on le crée ainsi que la variable et sa valeur
If EOF(a) And t2 Then
Close #a
Call SetFile(Filename, Resultat & retour & "[" & Contener & "]" & retour & Chr(32) & Variable & "=" & Value & retour)
Exit Function
End If
' recherche la variable
ligne = ""
test = True
t1 = True
t2 = True
While test
If Not EOF(a) Then
Line Input #a, ligne
t1 = Mid(Trim(ligne), 1, 1) <> "["
t2 = InStr(LCase(Trim(ligne)), LCase(Variable)) <> 1 Or _
Mid(Trim(Mid(Trim(ligne), Len(Variable) + 1)), 1, 1) <> "="
If t1 And t2 Then
Resultat = Resultat & ligne & retour
End If
End If
test = (Not EOF(a)) And t1 And t2
Wend
If t2 Then
'la variable est absente, on la crée à la fin du conteneur (avant le suivant)
Resultat = supprime(Resultat) & retour & Chr(32) & Variable & "=" & Value & retour & retour
Resultat = Resultat & ligne & retour
Else
'la variable est présente
Resultat = Resultat & Mid(ligne, 1, InStr(ligne, "=")) & Chr(32) & Value & retour
End If
While Not EOF(a)
Line Input #a, ligne
Resultat = Resultat & ligne & retour
Wend
Close #a
Call SetFile(Filename, Resultat)
End Function
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
|
Téléchargements
Logiciels à télécharger sur le même thème :
|