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 d'un fichier


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut Lecture d'un fichier
    bonjour !

    ça fait longtemps que je n'ai pas touché à delphi et j'ai un probleme !

    j'ai une erreur d'entré/sortie mais je pense avoir bien fait attention à la fermeture de mes fichiers texte et avoir bien déclarer l'utilisation ( append/reset )

    voici mon code

    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
    if ((cat.ItemIndex = (-1)) and (key_word.Text <> '') and (sort.ItemIndex >= 0)) then
    begin
     assignfile(lib,'bd_mum.txt');
     reset(lib);
     while not eof(lib) do       //<------- l'erreur se trouve la apparement
      begin
       readln(lib, transfer);
       cut(transfer);
         if (temp[i] = key_word.text) then
          begin
           closefile(lib);
           assignfile(bil,'search.txt');
           append(bil);
           writeln(bil, transfer);
           closefile(bil);
          end;
        end;
     closefile(lib);
     assignfile(lib,'search.txt');
     reset(lib);
     form6.result.clear;
     while not eof(lib) do
      begin
       readln(lib, transfer);
       form6.result.AddItem(transfer,form6.result);
      end;
     closefile(lib);
     form6.Show();
    end;
    si vous pouvez m'aidez vous eriez géniaux...

    et surtout n'hésitez pas à me donner des conseils sur la façon de programmer...

  2. #2
    Membre très actif
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Par défaut Re :
    Peut etre que tu t'ai trompé de chemin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assignfile(lib,'bd_mum.txt');

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Ben pourtant nan le fichier ce trouve bien à la racine du prog...

    Je pense que c'est un problême avec les append et reset lors de l'écriture et de lecture du fichier mais tout me semble correct il doit bien y avoir un petit truc...

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

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Par défaut
    Salut,
    Je ne voudrais pas avoir l'air de dire une connerie mais là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while not eof(lib) do       //<------- l'erreur se trouve la apparement
      begin
       readln(lib, transfer);
       cut(transfer);
         if (temp[i] = key_word.text) then
          begin
           closefile(lib); <- là je suis pas sur que ça devrait être là ça ...
           assignfile(bil,'search.txt');
           append(bil);
           writeln(bil, transfer);
           closefile(bil);
          end;
        end;
    Si par hasard ton programme entre dans la condition If et bien à la fin de celle-ci ton fichier n'est plus en mode ouverture ... Une fois ta boucle If terminé, la boucle While reprenant le dessus le test de EoF(lib) ne peut pas marcher ....


    A plus

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Par défaut
    Il me semble pas que tu dise une bêtise ^_^ ça m'a sauté aux yeux aussi. Dès que la condition de ton "if" est vérifiée, tu ferme ton fichier mais ton continue à vouloir itérer dessus.

    Pour y remédier je vois, comme ca, 2 solutions.

    1) à la fin de ton if tu met un "Break" pour quitter l'exécution de la boucle.

    2) Tu ajoute une deuxième condition dans ton while avant le test du eof

    Au plaisir

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    merci pour vos réponses !

    mais... ça fait toujours la même... erreur entré/sortie

    alors je vous explique le délire... c'est un programme avec le défi de faire une base de donnée ( elle sera petite : une centaine d'entrée ) avec des fichiers textes. C'est un logiciel de bibliothèque. ce bout la de programme est l'endroit ou je fait une recherche dans mon fichier texte en ayant un nom et la catégorie 'auteur' selectionné dans une combobox ( vous le voyez avec le premier "if" ).

    mais le prob c'est que j'ai plein de ligne dans mon fichier alors je cherche à travers mon ficher ou il y a toutes les entrées et sur chaque ligne je sépare la chaine ( qui est sous la forme : auteur;titre;date;... ) et je le met dans un tableau temporaire ( la procédure cut que j'ai créer plus loin ) qui me permet de voir au niveau de l'auteur dans notre cas le nom qui apparait ( temp[1] c'est ou ce trouve le nom ) et si c'est bon je copie la ligne dans le fichier résultat ( "search.txt" ).

    en bref c'est ça... je sais si vous comprenez avec mon explication un peu flou..

    enfin j'ai besoin de continuer la lecture de mon fichier pour voir toutes les lignes.

    voici ma procédure cut :

    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
     
    procedure cut (s: string);
     
    var ss,ff: string;
        j: integer;
     
    begin
     
    while AnsiPos(';',s)<>0 do
    begin
    ss:=copy(s,1,AnsiPos(';',s));
    delete(s,1,AnsiPos(';',s));
    assignfile(bil,'temp.txt');
    rewrite(bil);
    closefile(bil);
    assignfile(lib,'temp.txt');
    append(lib);
    writeln(lib,ss);
    closefile(lib);
    end;
    j:=1;
    assignfile(lib,'temp.txt');
    reset(lib);
    while not eof(lib) do
    begin
    readln(lib,ff);
    temp[j]:=ff;
    end;
    closefile(lib);
    end;
    fiou... bon si la on peut m'aider vous êtes fort parce que mes expliquations sont pas au niveau...

    merci encore

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

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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