Lire\Ecrire dans un fichier texte

johann36 Messages postés 130 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 9 mai 2017 - 9 sept. 2008 à 08:34
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 11 sept. 2008 à 22:02
Bonjour tout le monde,

J'essaie de lire et écrire dans un fichier texte mais c'est plus compliqué que je ne le pensais.
Je souhaite créer un fichier Param.ini par exemple ou je vais mettre mes config pour l'utilisation de mon appli.
Pour cela je créé une section ex : [USER] puis je vais à la ligne où je vais créer une clé ex : [ACCES1] et pour finir la valeur que je vais attribuer à cette clé ce qui donne au final :
[USER]
[ACCES1]=123456789

J'ai essayé par mes propres moyens afin d'éviter une nouvelle fois de poster un message sur vbfrance mais malheureusement je ne suis pas assez bon et je me demande si je suis logique ???
Tout le monde y arrive sauf moi (j'aurai dû mettre Caliméro en pseudo).

D'ailleurs si vous aviez quelques conseils à me donner pour que j'essaie de me dire que en fait je ne suis pas si mauvais que je le pense ça m'aiderai un p'tit peu.

En attendant je vous remercie à tous pour votre aide.

Pour info voici ce que j'ai fait :

    Public Structure StructureINI
        <VBFixedString(6)> Dim SECTION As String
        <VBFixedString(8)> Dim CLE As String
        <VBFixedString(100)> Dim VALEUR_CLE As String
    End Structure

            Dim FileNum As Integer = FreeFile()

            FileOpen(FileNum, ChmINI, OpenMode.Random, , , Microsoft.VisualBasic.Len(UneStructureINI))
            'Lecture du fichier

            Dim Count As Integer, Temp As String

            Count = 1

            Do While Not EOF(FileNum)

                FileGet(FileNum, UneStructureINI, Count)

                Temp = UneStructureINI.SECTION + "  " + UneStructureINI.CLE '+ _
                '"  " + UneStructureINI.VALEUR_CLE

                Count = Count + 1
            Loop
            FileClose(FileNum)

Ce qui se passe ça m'ouvre bien le fichier et cela lit bien le fichier, le seul problème, c'est qu'il me ligne la longueur que je lui ai indiqué dans FileGet.
Je ne sais pas comment faire pour qu'il me lise uniquement la 1ere ligne pour le mot [USER] et ensuite la 2ème pour la ligne complète ?

Johann36

5 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 sept. 2008 à 08:40
Salut,
Il existe des API toutes "prêtes" pour lire et écrire un fichier au format INI.
la différence est qu'un fichier INI ce présentera comme suit
[USER]
ACCES1=123456789
ACCES2=1234567890

....
pourquoi réinventer la roue ("carrée")

Ensuite en .NET, il me semble qu'il existe My.Settings ou Application.Settings pour stocker ce que tu souhaites comme paramètre d'exploitation

@+: Ju£i€n
Pensez: Réponse acceptée
0
johann36 Messages postés 130 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 9 mai 2017
9 sept. 2008 à 11:34
Bonjour [../auteur/JRIVET/89254.aspx jrivet]

Effectivement dit comme ça sa paraît plus mais encore faudrait-il le savoir.
Pour la conception du fichier je suis d'accord avec toi puisque c'est ce que je fais en ce qui concerne le reste ... .
Inventer la roue carré c'est bien mais encore faudrait-il savoir quelle existe.

Merci de ta réponse.
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
10 sept. 2008 à 14:26
Salut,
Il y a effectivement My.Settings qui remplace les fichiers INI. Pour ajouter/modifier les paramètres, tu vas dans les options du projet et sous l'onglet "paramètres"

Ensuite, pour lire/écrire un fichier, il faut passer par le namespace IO.
Par exemple, pour lire un fichier texte:
IO.File.ReadAllText(Fichier) As String
IO.File.ReadAllLines(Fichier) As String()

Sinon, si tu veux lire/écrire chaque ligne séparément, utilise un StreamReader ou StreamWriter:
Dim reader As New IO.StreamReader(IO.File.OpenRead("Fichier.ini"))
Do Until reader.EndOfStream
    Dim Line As String = reader.ReadLine
Loop
reader.Close()

Le framework n'a pas de classe pour gérer les INI (car il ne sont plus utilisé), mais il a tout ce qu'il faut pour gérer les XML ou les simples fichiers texte.
Mais pour gérer les INI, on peut toujours faire appel aux API de Windows...
0
johann36 Messages postés 130 Date d'inscription dimanche 15 février 2004 Statut Membre Dernière intervention 9 mai 2017
11 sept. 2008 à 20:20
Bonsoir à tous,

Kevin.Ory je me suis inspiré enfin on va plutôt j'ai fait un copier/coller du code qu'il y a à cet emplacement http://plasserre.developpez.com/v4-18.htm sur le site de Plasserre.
Sa fonctionne bien sauf que je ne peux ajouter de paramètres car à chaque fois il m'efface le fichier puis m'inscrit mes nouveaux paramètres.
Dommage ! c'était un bon début mais il y a toujours un problème.

Après j'ai essayé my.setting mais j'ai pas tout compris (comme d'hab !). Je vais essayé ton code, j'espère que cette fois-ci ce sera la bonne.

Je te tiens informé.

Merci d'avance.

Johann36
0

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

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
11 sept. 2008 à 22:02
Pour My.Settings :
Menu "Projet" > "Propriétés de xxx"
Onglet "Paramètres"
Là tu pourra ajouter différents paramètre en choisissant leur type. Par exemple String pour une chaine comme dans un fichier INI.
Ensuite, dans ton code, tu peux accéder à tes paramètres (lecture et écriture) en tapant "My.Settings."
Mais tu n'es pas sensé rajouter des paramètres dynamiquement... je crois que c'est possible, mais je ne l'ai jamais fais.

Si tu veux dynamiquement enregistrer des donnés textes, utilise le XML. Par exemple tous les fichiers projet et paramètres d'un projet Visual Studio sont en XML.
Regarde ce que tu as dans System.XML, notamment XmlDocument.
 
Ou pour le INI, je vais voir, je te redonnerai une réponse...
0
Rejoignez-nous