Salam
j'ai un odcument Txt, dont je dois parcourir, recenser les mots qu'il contient et les copier dans un Tmémo.
les mots sont séparés par :Un espace blanc ' , .
Merci
Salam
j'ai un odcument Txt, dont je dois parcourir, recenser les mots qu'il contient et les copier dans un Tmémo.
les mots sont séparés par :Un espace blanc ' , .
Merci
salut
la question est ?
si tu veut les extraire il te suffit de parcourir le fichier
et a chaque separateur ajouter le nouveau mot trouvé dans le memo
exemple algorithmique
@+ Phil
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 tansque pas fin de fichier faire Caracetre := lireCaractere(fichier) si caractere = Separateur Alors faire ajoutemotsdansmemo(mottemps) mottemps := ''; Fin faire sinom mottemps := mottemps+ Caractere fin tansque
c'est bon j'ai pu les séparer et les extraire, autrement!
merci
j'ai pu séparer les mots du texte, mais j'ai toujours un probleme avec le dernier mot, car pour le détécter je dois relire la fin du texte, aprè la boucle d electure, pour le trouver.
je ne peux pas m'expliquer mieux que ça, alors je vous donnes le 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 procedure TFentree.Button1Click(Sender: TObject); var F: TextFile; // F de type fichier texte szLigne,transit: String; i,n,j: Integer; begin n:=0; transit:=''; if open2.execute then begin Edit1.Text:=Open2.FileName; Memoi.clear; // efface toutes les lignes du mémo AssignFile(F, Open2.FileName); //A partir de maintenant, F désigne le fichier portant comme nom le nom récupéré par OpenDialog1 try 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, szLigne);// lit ligne du fichier et la met dans L puis se positionne sur la ligne suivante for i:=1 to Length(szLigne) do begin trouv:=false; if(szLigne[i] in ['"', '-','''', ' ']) then begin Memoi.text:=memoi.text+' '+transit+szLigne[i]; n:=n+1; Memo3.text:=memo3.text+transit; memo3.Lines.Add(#13); transit:=''; end else begin transit:=transit+szLigne[i]; end; end; Memoi.text:=memoi.text+' '+transit; // inserer le dernier mot dans le mémoI, car la boucle ne le détecte pas end; labn.caption:='N = '+inttostr(n+1);//nombre des mots trouvés finally CloseFile(F); // ferme le fichier end; end; end;
Bonjour,
Je n'ai pas lu votre code de manière tres méticuleuse, mais j'ai cru comprendre que votre problème est que vous ne detecter pas le dernier mot de chaque ligne.
Avez vous essayer d'ajouter ' ' a la fin de chaque ligne apres le readln.
Merci Tardiff !
avec un simple rajour d'un espace blanc à szLigne, j'ai pu supprimé la moitié du code.
voici le nouveau code de la procédure précédente :
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
47
48
49
50
51
52
53
54
55
56
57 procedure TFentree.Button2Click(Sender: TObject); var F: TextFile; // F de type fichier texte szLigne, transit: String; i,n,j: Integer; trouv:boolean; begin trouv:=false; n:=0; transit:=''; ind:=java.value; if open2.execute then begin Edit2.Text:=Open2.FileName; Memoj.clear; // efface toutes les lignes du mémo AssignFile(F, Open2.FileName); //A partir de maintenant, F désigne le fichier portant comme nom le nom récupéré par OpenDialog1 try 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, szLigne);// lit ligne du fichier et la met dans L puis se positionne sur la ligne suivante szligne:=szligne+' '; for i:=1 to Length(szLigne) do begin trouv:=false; if(szLigne[i] in ['"', '-','''', ' ']) then begin Memoj.text:=memoj.text+' '+transit+szLigne[i]; n:=n+1; //**** inserer ce mot dans le tableau for j:=0 to ind-1 do if (alpha[j]=transit) then trouv:=true; if (trouv=false) and (transit<>'') then begin alpha[ind]:=transit; ind:=ind+1; Memo3.text:=memo3.text+transit; memo3.Lines.Add(#13); end; //*********************************** transit:=''; end else begin transit:=transit+szLigne[i]; end; end; end; labm.caption:='M = '+inttostr(n); java.value:=ind; finally CloseFile(F); // ferme le fichier end; end; end;
salut
sinon a la sortie de la boucle tu incluer le transit si il etait different de vide
@+ Phil
Partager