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 :

lecture dans un fichier texte


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut lecture dans un fichier texte
    bonjour,
    je suis entrain de faire un travail en pascal. Mon programme doit accéder à un fichier texte nommé Résultat.txt. Voilà, j'ai commencé mon programme comme ceci pour tester et le compilateur ne fait qu'ouvrir une console dos et la referme !!!! Je crois que mon programme ne trouve pas le fichier texte et je ne c pas comment lui indiquer. Quelqu'un pourrait-il m'aider???

    merci


    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
    unit plongeon;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
    Form1: TForm1;
    resultats:text;
     
     
     
    implementation
     
    {$R *.dfm}
    begin
     
    assign(resultats,'resultats.txt');
    reset(resultats);
    readln(resultats);
    close(resultats);

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    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
    var 
     var F: TextFile; // F de type fichier texte
       FileName:string;
    begin
    FileName:='confi.txt';// ce fichier doit etre créer à l'avance
        AssignFile(F,FileName); //A partir de maintenant, F désigne le fichier portant comme nom le nom récupéré par OpenDialog1
        Reset(F); // ouvre le fichier F (F doit déjà exister)
        while not EOF(F) do // tant que l'on est pas arrivé à la fin du fichier
        begin
          Readln(F, L);// lit ligne du fichier et la met dans L puis se positionne sur la ligne suivante
           label1.Text:= 'Ce programme lit un fichier text ';
     
     
     
        end;
          CloseFile(F);
    end;

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour!

    n'oublie pas de mettre ton code entre les balises correspondante!!
    essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      Fichiertxt: TextFile;
      resultats : string;
    begin
        AssignFile(Fichiertxt, 'Résultat.txt');
        Reset(Fichiertxt);
        Readln(Fichiertxt, resultats); 
        CloseFile(Fichiertxt);
    end;

  4. #4
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Pour être sur que ton programme ne plante pas (fichier inexistant par exemple) deux solutions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    AssignFile(Fichiertxt, 'Résultat.txt');
    If FileExist('Resultat.txt') then  Reset(Fichiertxt);
        Readln(Fichiertxt, resultats); 
        CloseFile(Fichiertxt);
    Ou encore les balises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {$I-}
    Reset(F);
    {$I+}
    If IOresult=0 then ...


  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 584
    Points : 25 251
    Points
    25 251
    Par défaut le Begin
    Juste pour info

    au lieu de "begin" on peut mettre "initialization", le code est executé au moment de l'initialize dans le dpr AVANT le lancement de la fenêtre ...

    Si tu ne change pas la directive $I {$IOCHECKS ON/OFF} , tu écrire ceci :

    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
    var
      Fichiertxt: TextFile;
      resultats : string;
    begin
        try
          AssignFile(Fichiertxt, 'Résultat.txt');
          Reset(Fichiertxt);
          try
            Readln(Fichiertxt, resultats); 
          finally
            CloseFile(Fichiertxt);
          end;
        except
          on E: Exception do OutputDebugString(PChar(E.Message));
        end;     
    end;
    le déclenchement d'une exception dans la clause initialization et finalization peut-être fatale pour un programme (Erreur Runtime 216 ...)

  6. #6
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    L'utilisation du TStringList peut simplifier beaucoups de choses, surtout si le texte comporte des sauts de lignes et que souhaites extraire chaque ligne. De mémoire, voici un 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
    Function MyLoadFile(FileName: String): Boolean;
    Var f: TStringList;
        i: Integer;
    Begin
      Result := False;
      f := TStringList.Create;
      Try
        f.LoadFromFile(FileName);
        If (f.Strings.Count > 0) Then Begin
          For i := 0 To f.Strings.Count - 1 Do
            ShowMessage(f.Strings[i]);
          Result := True;
        End Else
          ShowMessage('Le fichier est vide!');
      Except
        ShowMessage('Erreur durant l''ouverture du fichier!'); 
      End;
      f.Free;
    End;
    La méthode SaveToFile permet de réaliser l'enregistrement.
    Ne pas oublier de libérer l'objet.

    On peut également utiliser un TFileStream : Voir l'aide en ligne (touche F1).

    L'utilisation des fonctions AssignFile() ... CloseFile() est, selon moi, plus réservée aux fichiers typés.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 584
    Points : 25 251
    Points
    25 251
    Par défaut et le Free ?
    Effectivement, la TStringList fonctionne très bien, je l'ai utilisé à mes débuts pour charger des fichiers provenant d'AS400 de plus de 100Mo, faut juste avoir de la RAM sinon ça swappe

    Ne pas oublier le Free, sinon, cela laisse trainer les chaines en mémoires ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    f := TStringList.Create;
      Try
        ...
      finally
        f.free();
      end;

Discussions similaires

  1. Lecture dans un fichier texte.
    Par tazthedev dans le forum Delphi
    Réponses: 4
    Dernier message: 31/10/2006, 16h07
  2. Réponses: 4
    Dernier message: 23/03/2006, 17h12
  3. Réponses: 6
    Dernier message: 23/02/2006, 12h09
  4. [ASP] Lecture dans un fichier texte
    Par thoomis dans le forum ASP
    Réponses: 3
    Dernier message: 23/11/2005, 15h08
  5. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17

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