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

Langage Delphi Discussion :

ecriture dans un fichier text


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut ecriture dans un fichier text
    bojours a tous,
    je souhaiterai pouvoir enregistrer des données (TComboBox,TEdit,TTrackBar) dans un fichier texte et lire des données de fichiers text.J'ai déjà essayé avec Write dans une nouvelle procédure mais j'ai pas la bonne syntaxt. Quelqu'un pourrai-t-il m'aider pour obtenir la bonne syntaxe pour réussir cet enregistrement?
    Merci d'avance

    lerouzes

  2. #2
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut
    Il faut utiliser Readln pour lire regarde l'aide delphi sur
    - AssignFile
    - Readln

    Tu trouverras toute l'aide que tu as besoin

    BONNE PROG !!

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    J'ai écrits:

    var
    F: TextFile;
    SaveDialog1: TSaveDialog;
    Combobox_Da1Adr: TComBox.
    begin
    if SaveDialog1.Execute then begin
    AssignFile (F,SaveDialog1);
    Write(F, Combobox_Da1Adr);
    end;
    CloseFile(F);
    end;

    Et le message d'erreur est type illégal ds une instruction Write et Déclaration forward ou external non satisfaite: TForm_Principal qui est le nom de ma page principale.
    Voyez vous les erreurs de syntaxes?

  4. #4
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    essayez d'utilier les balises 'code', ce sera plus clair.


    Pourquoi SaveDialog1 est il en déclaration var ? il devrait être sur la Form et si il l'est, il est inutile de le rappeler dans les var de la fonction.

    pareil pour le combobox.

    pour le nom de fichier à écrire,
    AssignFile (F,SaveDialog1.fileName);


    Write(F, Combobox_Da1Adr); ne fonctionnera pas.
    Un TCOmboBox n'est pas du texte, c'est un objet.

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai du mettre SaveDialog1: TSaveDialog; et ComboBox_Da1adr:TComboBox; en variables locales car il me disait par exemple: Identificateur non déclaré :'SaveDialog1' .
    Sinon que dois-je mettre dans Write pour pouvoir écrire la valeur d'une ComboBox?
    J'ai mis alors: Write(F,ComboBox_Da1Adr.Text), est-ce corrcte?
    Merci d'avance

  6. #6
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Il faut poser une savedialog sur la form.


    pour mémoriser tous les items du combobox,

    Write(F,ComboBox_Da1Adr.Items.Text)

    TcomboBox.text, c'est uniquement le text qui est sélectionné à l'instant T

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    oui mon ComboBox est dans une TabSeet qui est dans une Form.J'ai commencé par mettre mon Save dialog dans la form, mais dois-je le mettre dans la TabSeet?

    Car j'ai essayé d'en mettre un autre sur le TabSeet, appelé SaveDialog2, et il me mets comme message d'erreur à la compilation:Identificateur non déclaré:'SaveDialog2'
    Je ne comprends pas ca!!

  8. #8
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    quelle est la structure de ton application ?

    plusieurs forms ? si oui, dans laquelle sont les éléments que tu veux sauvegarder ?


    de quel type est la fonction ou procédure dans laquelle tu essaies d'écrire ton fichier ?
    Procedure TForm.maprocedure ou Procedure maprocedure ?

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Ma ComboBox est ds une TabSheet qui est elle meme dans ma form principale.Mon application ne posséde qu'une form dans laquelle il y a 3 TabSheet et dans lesquelles il y a donc des ComboBox et autre dont je dois enregistrer les valeures dans un fichier text.
    Le probléme est que je n'ai jamais gerer d'enregistrement, je ne sais pas comment faire.

    Pour la fonction ou procédure dans lequel je dois l'ecrire je ne l'ai pas défini, je ne savais pas qu'il fallait en définir un, et je ne sais pas comment le définir...
    Merci de ton éclairage...

  10. #10
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    un petit exemple commenté

    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
    45
    46
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;
     
    type
      TForm1 = class(TForm)
        SaveDialog1: TSaveDialog; // la savedialog1 a été posée sur la form
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        TabSheet3: TTabSheet;
        ComboBox1: TComboBox; // appartient à TabSheet1
        ComboBox2: TComboBox;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject); // ma procédure est une procédure de TForm1
    Var
      F: TextFile;
    begin
    If SaveDialog1.Execute then
      Begin
      AssignFile (F,SaveDialog1.FileName);
      Rewrite(F); // ne pas oublier rewrite, sinon erreur I/O
      Writeln(F, Combobox1.items.text);
      CloseFile(F); // le closefile à l'intérieur du Begin/end
      End;
    end;
     
    end.

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    ok c'est génial ce que t'as envoyé, je devrai pouvoir m'en sortir avec ca.Merci beaucoup de ton aide plus que précieuse.

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    c'est bon j'ai écrit le programme, il n'y a plus de probléme, par contre il enregistre ts les items et pas celui celectionné...Je pense qu'il faut changer Combobox1.items.text dans le Writeln, qu'en pensez-vous?
    MERCI

  13. #13
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    si vous désirez enregistrer uniquement l'item sélectionné
    Writeln(F, Combobox1.text);
    si vous désirez enregistrer tous les items
    Writeln(F, Combobox1.items.text);

  14. #14
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    merci ca marche nickel, mais il m'enregistre toutes les données des ComboBox sur la même ligne.Puis-je les lui faire écrire ligne par ligne pour que ce soit bien lisible?
    MERCI

  15. #15
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    il faut utiliser WriteLn et non Write

  16. #16
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    ok j'ai utlilisé plusieurs Writeln et ca marche.
    Par contre maintenant que j'ai enregistré ttes mes données en lignes dans un fichier text, comment puis-je relire ce fichier text a partir de mon application?J'ai posé un OpenDialog1 dans la forme et a son ouverture j'essai d'utiliser readln pour relire le fichier mais je ne parviens pas...
    Pourais-je avoir quelques lignes de codes comme precédement pour lire des données de ComboBox à partir d'un fichier text?

    Merci d'avance pour tout

  17. #17
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 7 002
    Points
    7 002
    Par défaut
    Tu veux écrire le contenu de ton fichier dans ta ComboBox ?

    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
    var
       szValeur: String
    begin
       If OpenDialog1.Execute then 
       begin 
         AssignFile (F,OpenDialog1.FileName); 
         Reset(F); // ne pas oublier
         while not EOF(F) do
         begin
            Readln(F, szValeur); 
            Combobox.Items.Add(szValeur);
         end;
         CloseFile(F); 
       end; 
    end;
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  18. #18
    Futur Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 23
    Points : 6
    Points
    6
    Par défaut
    Le probléme est que j'ai un textbox, 10 ComboBox et 3 tractBar dont j'ai enregistré les donnés en fichier text.Alors quel serai le code pour reécrire ces differentes données a leur place sachant que j'ai fais mettre ces données en colonne dans le fichier texte?
    Merci pour vos réponses en ligne de code c'est génial

  19. #19
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Une suggestion : Abandonnez les readln et writeln et utilisez des tstringlist.

    exemple :
    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
     
    var tsl:tstringlist ;
    begin
    //creation object
    tsl:=tstringlist.create ;
     
    // creation des lignes et sauvegarde fichier
    tsl.clear ;
    tsl.add('COMBO1Text='+combo1.text) ;
    tsl.add('EDIT1Text='+edit1.text) ;
    ...
    tsl.savetofile('c:\mydir\myfile.txt') ;
     
     
    ...
    // lecture tsl et affiche chaque ligne
    tsl.loadfromfile('c:\mydir\myfile.txt') ;
    for i:=0 to tsl.count-1 do showmessage(tsl[i]) ;
     
    // utilisation de la propriétés value
    showmessage(tsl.values('COMBO1Text')) ;
     
    // liberation object
    tsl.free.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour à tous! Bonjour Graffito!
    C'est en cherchant de l'aide sur les TStringlist que je suis tombé sur ce post.

    Très intéressant puisqu'il m'a permis de comprendre assez vite les "bases" d'utilisation de ce composant...

    Si je reprends ton exemple vers la section (//création des lignes et sauvegarde fichier): je dispose d'un timer qui fait que toutes les 5 secondes, j'ai des captions de Label qui sont enregistrées dans un fameux fichier texte.

    J'ai repris une partie de ton code, et tout marche bien. Les données sont bien capturées et enregistrées dans le fichier texte. Cependant, toutes les cinq secondes, les données sont écrasées dans ce fichier, et non pas mise à la suite les unes des autres...et je ne vois pas trop comment faire.

    J'ai bien essayé, par exemple, d'insérer un saut de ligne après les captures de mes labels (#13#10) pensant qu'une deuxième ligne serait créée, mais nada, je ne dispose qu'une seule ligne qui se met à jour toutes les cinq secondes...

    Aurais-tu (ou qq'un d'autre) une idée sur la chose, s'il te plaît?

Discussions similaires

  1. Probléme d'ecriture dans un fichier texte en java
    Par oldscrout dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 19/01/2007, 19h10
  2. [Tableaux] ecriture dans un fichier texte
    Par TiNoUcHe dans le forum Langage
    Réponses: 4
    Dernier message: 27/09/2006, 16h12
  3. probleme d'ecriture dans un fichier texte
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 21/06/2006, 17h51
  4. Ecriture dans un fichier texte
    Par Bmagic dans le forum MFC
    Réponses: 9
    Dernier message: 07/06/2006, 14h40
  5. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33

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