Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3024 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Lire un fichier text

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lire un fichier text

n°1511567
lisa61
Posté le 06-02-2007 à 20:47:49  profilanswer
 

Bonjour tout le monde,
Voilà, je débute plus ou moins en programmation et donc, je vois le Pascal.
J'aimerais bien réaliser un petit programme mais j'ai vraiment du mal à le faire. Je vous explique ce que j'aimerais faire, en espérant que vous pourrez m'aider...
A la base, j'ai un fichier (input) de type text qui contient ceci:
//---------
ceci_est_une_ligne*
_et_une_autre*
*
une derniere*
//--------
où "_" est un espace et "*" un eoln.
 
J'aimerais afficher à l'écran tous les mots contenus dans input mais sans espace et sans passage à la ligne surperflu (c-à-d, uniquement ceux réalisés par mon writeln (mot)).
Par exemple, ici, ça donnerait:  
//--------
ceci*
est*
une*
ligne*
...
une*
derniere*
//-------
J'ai essayé toutes les façons possible mais je n'y arrive vraiment pas... combien de boucles utiliser, avec quelles conditions, que faire???
 
S'il vous plait, aidez-moi   :cry:  
 
Voilà, en espérant que vous pourrez m'aider,
bisousssssssssss,
Lisa.

mood
Publicité
Posté le 06-02-2007 à 20:47:49  profilanswer
 

n°1511987
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 07-02-2007 à 20:49:10  profilanswer
 

Salut
 
tu peut faire une boucle qui parcours toute la ligne en enregistrant chaque mots à chaque fois qu'elle trouve un espace (_):
 
admettons que t'as déja fait ton readln dans un string nommé "ligne" tu peut faire ça:
(pour le test on va le mettre en variable)
 

procedure TForm1.Button1Click(Sender: TObject);
var
ligne:string;
i, motencours :integer;
mot : array [1..100] of string; // on va dire max 100 mots par lignes
begin
ligne:='ceci_est_une_ligne*';
motencours:=1;
for i:=1 to length(ligne)-1 do // toute la ligne sauf la fin (*)
  begin
    if ligne[i] <> '*' then //par securité
     begin
      if ligne[i] <> '_' then  
      mot[motencours]:=mot[motencours]+ligne[i]
      else inc(motencours);
     end
    else showmessage('oh elle est bizarre la ligne!!!');
  end;
 
showmessage(inttostr(motencours)+' mot(s) dans la ligne'); //motencours correspond aussi au nombre de mot à la fin
 
for i:=1 to motencours do showmessage(mot[i]);
end;


 
 
ligne [i] est le caractère N° i de la ligne donc ici celui qui est en cours de "traitement" ex dans 'ceci' -> ligne[2]='e'
 
voila après tu choppe chaque mot dans le tableau mot[X] où X est le Xième mot de ta ligne ;)

n°1512866
Madmass
Posté le 09-02-2007 à 21:38:17  profilanswer
 

Flagad'aware a écrit :

Salut
 
tu peut faire une boucle qui parcours toute la ligne en enregistrant chaque mots à chaque fois qu'elle trouve un espace (_):
 
admettons que t'as déja fait ton readln dans un string nommé "ligne" tu peut faire ça:
(pour le test on va le mettre en variable)
 

procedure TForm1.Button1Click(Sender: TObject);
var
ligne:string;
i, motencours :integer;
mot : array [1..100] of string; // on va dire max 100 mots par lignes
begin
ligne:='ceci_est_une_ligne*';
motencours:=1;
for i:=1 to length(ligne)-1 do // toute la ligne sauf la fin (*)
  begin
    if ligne[i] <> '*' then //par securité
     begin
      if ligne[i] <> '_' then  
      mot[motencours]:=mot[motencours]+ligne[i]
      else inc(motencours);
     end
    else showmessage('oh elle est bizarre la ligne!!!');
  end;
 
showmessage(inttostr(motencours)+' mot(s) dans la ligne'); //motencours correspond aussi au nombre de mot à la fin
 
for i:=1 to motencours do showmessage(mot[i]);
end;


 
 
ligne [i] est le caractère N° i de la ligne donc ici celui qui est en cours de "traitement" ex dans 'ceci' -> ligne[2]='e'
 
voila après tu choppe chaque mot dans le tableau mot[X] où X est le Xième mot de ta ligne ;)


 
mouai bof est-ce que c'est vraiment necessaire de faire tout ça (tableau etc...)
 
pour quoi ne pas faire un assignfile, ensuite une boucle jusqu'a EOF du fichier en stockant la phrase dans un string avec readln, puis utiliser ta boucle et faire directement un showmessage.
 
si tu ne vois absolument pas de quoi je parle je peux te faire le bout de code.

n°1512951
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 10-02-2007 à 12:03:23  profilanswer
 

bah disont que je me suis concentré sur le principal de ce qu'il y avait à faire et pour lui donner un code qui lui présente déja ce qu'elle veut j'ai mis le tableau et les showmessage dans la dernière boucle pour afficher koi  :)
 
après oui pas difficile de remplacer le var ligne par un readln(source) et faire un writeln(destination) avec mot[x]
 
enfin bon on est pas là pour faire tout le boulot non plus  :ange:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Lire un fichier text

 

Sujets relatifs
ouvrir un fichier juste en le n'omantComment choisir le chmod d'un fichier upoladé ?
[résolu] Créer un fichier .bat (l'intérieur du fichier)pb avec batch pour copie de fichier
probleme pour lire un fichier texte avec script phpRecherhce d'une valeur dan un fichier texte
[C] Construire un tableau à partir d'un fichierlire un fichier text ou autre avec javascript
comment lire une ligne dans un fichier text pour l'utiliser dans[JAVA] lire les donnes d'un fichier text
Plus de sujets relatifs à : Lire un fichier text


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR