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 :

Enregistrer un memo dans un fichier texte


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 54
    Points : 29
    Points
    29
    Par défaut Enregistrer un memo dans un fichier texte
    Bonjour

    Je bloque sur un truc ...

    Dans mon appli, j'ai 4 colonnes (memo) dans lesquelles je viens inscrire des données ...
    Elles sont d'abord rangées dans un tableau car elles ont une place précise et ensuite affichées dans les 4 memo.
    A chaque nouvelle donnée, je veux l'enregistrer dans un fichier texte sur le disque dur pour avoir une sauvegarde des dites données en cas de plantage !

    A l'ouverture de mon appli j'oblige l'utilisateur à créer un fichier texte. Bon ça ok ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if savedialog1.Execute then     // ouvre la boite de dialogue d'enregistrement
         begin
            copier_4_colonnes();     // transorme les 4 memo en un seul (memo6)
            memo6.Lines.SaveToFile(savedialog1.FileName);
            label14.caption := savedialog1.FileName; // affiche le nom du fichier et son chemin
         end;
    Ensuite à chaque nouvelle donnée, je rassemble mes 4 memo (de 30 lignes) en un seul de 120 lignes et je voudrais écraser les anciennes valeurs avec ce nouveau memo !!!

    C'est là que je bloque ... avec les Assign, Rewrite, memo1.lines.SaveTofile et cie ...

    J'ai beau le tourner dans tous les sens, ça veut pas !!! Toujours un truc pas compatible avec l'autre ...

    Comment faire en sorte que le nouveau contenu de ce memo aille écraser les anciennes valeurs et referme le fichier jusqu'à ce qu'une nouvelle données arrive ???

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je verrai bien un truc du style

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Procedure WriteMemo(ALst : TStrings;ASaveFile : String; AEraseFile : Boolean);
    var
      MemoStream : TFileStream;
      i : Integer;
     
      // Si delphi XE et +
      {$IFDEF D15}
      Buffer : TBytes;
      Encoding : TEncoding;
      {$ENDIF}
    begin
      if ALst.count = 0 then
        Exit;
     
      // Suppression du ficheir
      if AEraseFile then
        DeleteFile(ASaveFile);
     
      if not AEraseFile and FileExists(ASaveFile) then
      begin
        // Update du fichier
        MemoStream := TFileStream.Create(ASaveFile, fmOpenReadWrite);
        MemoStream.Seek(0,soFromEnd);  
      end else
        // Création du fichier
        MemoStream := TFileStream.Create(ASaveFile, fmCreate);
      try
        For i := 0 to Alst.count -1 do
        begin
     
          {$IFDEF D15}
            // Pour dephi XE et +
            Encoding := TEncoding.Default;
            Buffer := Encoding.GetBytes(Alst[i]);
            FFile.Write(Buffer[0],Length(Buffer));
          {$ELSE}
           FFile.Write(Alst[i][0],Length(Alst[i])); 
          {$ENDIF}
        end;  
      finally
        memoStream.Free;
      end;
    end;
    A utiliser comme suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     // AErase a True pour le premier pour effacer le fichier avant d'écrire
    WriteMemo(Memo1.Lines,SaveDialog1.FileName,True);
    WriteMemo(Memo2.Lines,SaveDialog1.FileName,False);
    WriteMemo(Memo3.Lines,SaveDialog1.FileName,False);
    WriteMemo(Memo4.Lines,SaveDialog1.FileName,False);
    Code non testé directement mais l'idée est la

Discussions similaires

  1. Enregistrer une image dans un fichier texte
    Par rvdth dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/05/2009, 14h02
  2. enregistrement des matrices dans des fichier text
    Par fleurrouge dans le forum Signal
    Réponses: 1
    Dernier message: 22/05/2009, 21h23
  3. Réponses: 6
    Dernier message: 01/04/2009, 10h49
  4. Sauvegarder un Memo dans un fichier texte
    Par gtaman dans le forum Débuter
    Réponses: 4
    Dernier message: 08/12/2007, 14h01
  5. enregistrer un tableau dans un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2006, 15h10

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