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

Catégorie :Fichier / Disque Classé sous : lecture, ecriture, fichier, ini Niveau : Débutant Date de création : 29/06/2001 Date de mise à jour : 28/08/2001 00:00:00 Vu : 11 520

Note :
3,17 / 10 - par 6 personnes
3,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

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
   
 

Commentaires et avis

signaler à un administrateur
Commentaire de fabrice69 le 26/04/2002 01:28:47 administrateur CS

J'ai trouvé un bug, je ne sais pas si c'est que moi qui l'avais mais avec le getini on récupérait a chaque fois le '=' avec la valeur de la variable.

Il faut remplacer la ligne :
        GetIni = Trim(Mid(ligne, InStr(ligne, "=") ))
par celle-ci
        GetIni = Trim(Mid(ligne, InStr(ligne, "=") + 1))

car la chaine de caracteres de la variable commence apres le '='.

F___

signaler à un administrateur
Commentaire de warreng69 le 08/12/2002 19:28:16

svp est ce que kelk un possederai une source avec une fonction de lecture d'un fichier ini avec seulement le nom du fichier en parametres.
merci
et je souhaiterai egalement savoir comment le fichier ini peut etre lu (chargé) par une application.

signaler à un administrateur
Commentaire de z980x le 07/09/2003 14:30:08

http://www.vbfrance.com/article.aspx?ID=35 Plus court et plus simple, en un mot, le meilleur...

signaler à un administrateur
Commentaire de ZZEBULON le 04/10/2003 23:03:55

On peut aussi ouvrir un objet word et se servir de la propriété System.PrivateProfileString ça prend 3 lignes!

signaler à un administrateur
Commentaire de virginie1575 le 08/04/2004 14:09:39

Coucou, c rigolo de lire les commentaires ! Vous vous battez tous pour la même chose ! En tt cas, il n'y a pas de meilleure solus, elles sont ttes correctes mais il y en a juste des + performantes que d'autres ! Je vous souhaite une bonne continuation à tous.
PS : merci z980x, g trouvé dans ton code juste la petite partie qui me manquait ! (writeINI) merci tchao !
Biz à tous

signaler à un administrateur
Commentaire de clad87 le 16/04/2004 00:49:02

Ton code est buggué:

' ouvertur du fichier
a = FreeFile()

il ne peut pas ouvrir plus de 450 fichier (tu as peut etre oublier de les refermer.. ?)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

lecture et ecriture dans un fichier ini [ par CEDICEMAN ] bonjour tout le monde, je suis novice dans la programmation et j'essaye de me faire un petit programme sur de la geston de stock. Pour cela il faut qu lecture et ecriture dans un fichier texte en VBScript [ par 0PackMan0 ] Salut tous le monde, . J'aimerais savoir comment faire pour lire et ecrire dans un fichier texte en me servant de VBScript.Merci d'avance et @+++ Enregistrement et lecture d'un fichier .ini [ par Crash_overide12 ] Bon voila je suis en train de develloper un petit prog qui stoc dans un fichier ini le nom des programmes et leurs codes comme suit :Nom du programe @ Lecture - Ecriture dans un fichier contenant des structures [ par fred31300 ] Bonjour,Je cherche à lire, ecrire des données en VB6 - du type :dim mesparametre as parametrePublic Type parametre nom As String * 15 lecture fichier ini [ par Nochasse ] Bonsoir a tousJ aimerai connaitre le code permettant de lire un fichier iniMerci bonne soir&#233;e lire et ecrire en meme temps dans un fichier avec les fstream [ par Daimadoshi ] slt tlm, voila j'i un petit probleme : je voudrai pouvoir faire des acces en lecture et en ecriture sur un fichier mais je n'y parviens pas voici mon lire et ecrire en meme temps dans un fichier avec les fstream [ par Daimadoshi ] slt tlm, voila j'i un petit probleme : je voudrai pouvoir faire des acces en lecture et en ecriture sur un fichier mais je n'y parviens pas voici mon ecriture et lecture dans un fichier texte en meme temps URGENT [ par ben ] Bonjourje voudrais savoir comment ecrire et lire en meme temps dans un fichier texte (sous vb3, oui je sais c vieux).de plus je voudrais lire ligne pa ecriture et lecture dans un fichier texte en meme temps URGENT [ par ben ] Bonjourje voudrais savoir comment ecrire et lire en meme temps dans un fichier texte (sous vb3, oui je sais c vieux).de plus je voudrais lire ligne pa lecture / ecriture dans un fichier ???... [ par wico2002 ] Bonjour: mon problème n'est pas d'écrire dans un fichier texte mais de lire les infos..... : Je me fais un jeu et je peux me permettre de faire de


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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,406 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é.