Lire un fichier text

Lire un fichier text - Delphi/Pascal - Programmation

Marsh Posté le 06-02-2007 à 20:47:49    

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.

Reply

Marsh Posté le 06-02-2007 à 20:47:49   

Reply

Marsh Posté le 07-02-2007 à 20:49:10    

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 ;)

Reply

Marsh Posté le 09-02-2007 à 21:38:17    

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.

Reply

Marsh Posté le 10-02-2007 à 12:03:23    

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:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed