Soyez le premier à donner votre avis sur cette source.
Snippet vu 14 582 fois - Téléchargée 57 fois
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
' ouvertur du fichier
a = FreeFile()
il ne peut pas ouvrir plus de 450 fichier (tu as peut etre oublier de les refermer.. ?)
PS : merci z980x, g trouvé dans ton code juste la petite partie qui me manquait ! (writeINI) merci tchao !
Biz à tous
merci
et je souhaiterai egalement savoir comment le fichier ini peut etre lu (chargé) par une application.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.