IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Ecrire un mot dans un fichier texte existant


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 43
    Points
    43
    Par défaut Ecrire un mot dans un fichier texte existant
    bonjour.

    Je voudrais écrire dans un fichier texte un mot à un endroit bien précis.
    Pour exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      j'ai
        ceci on mon fichier texte
        et je veux écrire une phrase juste au dessus de celle-ci
     
    et je voudrais:
        ceci on mon fichier texte
        voila la phrase que je voudrais écrire
        et je veux écrire une phrase juste au dessus de celle-ci
    Peux t on faire cela et si oui comment doit on s'y prendre? (je suis allé voir du coté des Write WriteLN mais j'ai pas réussi)

    Merci

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour,

    Tu localises ton fichier
    Tu le charges dans une structure adéquate (TStringList)
    Tu cherches la position souhaitée
    Tu insères ta ligne
    Tu sauves ton fichier en entier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    procedure TForm1.button987Click(Sender: TObject);
    var
      nomfichier : string;
      MonFichier : TStringList;
      idx        : Integer;
    begin
      nomfichier := 'fichier.txt';
      if FileExists(nomfichier) then
      begin
        MonFichier := TStringList.create;
        try
          MonFichier.LoadFromFile(nomfichier);
          if MonFichier.Find('Le chaîne recherchée', idx) then
          begin
            MonFichier.Insert(idx, 'Le chaîne insérée');
            MonFichier.SaveToFile(nomfichier);
          end;
        finally
          MonFichier.free;
        end;
      end;
    end;

  3. #3
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour manipuler les fichiers textes, le plus pratique est d'utiliser TStringList qui représente une liste de lignes, où chaque ligne est une chaine de caractère , en fait, ça marche comme un TMemo invisible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    var UnTexte:TStringist;
    begin
       //Creer l'objet 
       UnTexte:=TStringList.Create;
     
       //Charger le fichier Texte :
       UnTexte.LoadFromFile('TonFichier.Txt');
     
       //A partir de là :
       //UnTexte.Count doit contenir 2 (nbre e ligne dans ton texte)
       //UnTexte.Strings[0] contient "ceci on mon fichier texte"
       //UnTexte.Strings[1] contient 
                  "et je veux écrire une phrase juste au dessus de celle-ci"
     
       //Inserer une ligne avant la ligne n°1 (deuxième ligne puisqu'ellses sont numérotée de 0 à Count-1) :
       UnTexte.Insert(1,'voila la phrase que je voudrais écrire');
     
      //Sauver le fichier
      UnTexte.SaveToFile('TonFichier.Txt');
     
       //Libérer l'objet
       UnTexte.Free;
    end;
    Ce n'est pas très compliqué à utiliser, et au fur et à mesure de l'utilisation de TStringList, tu ne pourras plus t'en passer !

    Bon dev

    Edit : j'ai été grillé par Yurk
    ...et comme il le fait lui-même, il est bon de protéger le code avec un try...finally...end. Je ne l'ai pas fait parceque tu n'as pas l'air d'être encore à ce stade là, je me trompe ?

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 43
    Points
    43
    Par défaut
    ok merci vos programme marche nicket et pour le try finally j'ai pris l'habitude de le mettre (yep a croire que je suis pas si mauvais que ca )
    sinon est ce qu'on peut, au lieur d'insérer une ligne, remplacer une ligne existante par une autre ligne?

  5. #5
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Mickey.jet
    ok merci vos programme marche nicket et pour le try finally j'ai pris l'habitude de le mettre (yep a croire que je suis pas si mauvais que ca )
    sinon est ce qu'on peut, au lieur d'insérer une ligne, remplacer une ligne existante par une autre ligne?

    Bien sur, en reprenant notre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UnTexte.string[2]:='Ce texte remplace celui de la 3ème ligne';

  6. #6
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    waskol trop rapide pour moi j'étais parti lansquiner !

    a+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    bonjour
    je débute sous Delphi et pour l'instant, je décortique vos exemples pour mieux comprendre
    j'ai donc repris ce qui est plus haut, mais ça ne fonctionne pas.
    en pas à pas, je passe directement de la recherche de la chaine à la fin
    il semble que le fichier ne se charge pas en tout cas, si je laisse le curseur sur MonFichier, j'obtiens () (ce qui veut dire que rien n'est chargé? non?
    si qqun peut m'aider...
    évidemment le fichier en question existe bien, est bien lu et contient la chaine "vent" cherchée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    procedure TForm1.Button1Click(Sender: TObject);
        var
        nomfichier : string;
        MonFichier : TstringList;
        idx         : integer;
        begin
        nomfichier := 'C:\essai.txt';
        if   FileExists(nomfichier) then
           begin
        Monfichier := TstringList.Create;
            try
        MonFichier.LoadFromFile(nomfichier);
        if Monfichier.Find('vent',idx) then
              begin
        MonFichier.Insert(idx,'toto');
        MonFichier.SaveToFile(nomfichier);
               end;
             finally
               MonFichier.Free;
              end;
            end;
        end;
    et félicitations pour le forum et la FAQ, plus instructif qu'un bouquin.
    Jean Pierre

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 871
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 871
    Points : 15 287
    Points
    15 287
    Par défaut
    Salut !

    Ton code fonctionne très bien (w2k - D7), et m'a rajouté "toto" avant la ligne "vent". J'ai créé C:\essai.txt avec
    pluie
    vent
    neige

    Valà,
    --
    jp

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par potili2
    ..., si je laisse le curseur sur MonFichier, j'obtiens () (ce qui veut dire que rien n'est chargé? non?
    si qqun peut m'aider.....
    Non, ça veut juste dire que MonFichier est une classe (avec des propriétés et des méthodes), mais pas une simple variable.

    Pour t'en convaincre, au moment ou tu trace ton code, tu peux faire un clic droit dessus, et dans le menu tu choisis "Deboguer-->inspecter" (ou direct Alt+F5 dessus.... et hop ! tu obtiens tout son contenu

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    merci pour vos réponses rapides!!!
    effectivement, ça marche...
    une explication serait que j'aie mis un espace après vent car dnas ce cas là, ça marche pas (logique puisque c'est une sous chaine
    Jean Pierre

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    1-charger le fichier dans un memo
    2-inserz la phrase voulu dans la postion N, sachant que N et le numero de la ligne la ou vous voulez ajouter la phrase
    3-enregistrer les modification

    Memo1.Lines.LoadFromFile('chemin de fichier');
    memo1.Lines.Strings[N]:='laphrase';
    Memo1.Lines.SaveToFile('chemin de fichier');

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 29/04/2006, 10h40
  2. Ecrire 4 lignes dans un fichier texte
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 17/03/2006, 16h04
  3. Trouver un mot dans un fichier texte
    Par godik dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 10/03/2006, 14h31
  4. Réponses: 4
    Dernier message: 16/12/2005, 17h43
  5. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo