Bonjour,
j'ai du faire une grosse bétise car je n'obtien pas du tout le resultat escompté.
Je tente de récupérer une à une chaque phrase d'un texte ecrit sur une ligne.
Pour ce, j'utilise count, index et index_non_blank de ada.strings.fixed.
Dans le code ci-dessou, je recupere le texte en question du message dans une lingne "line"
Le problème c'est que je récupère n'importe quoi. ou à peut près n fois le reste du texte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 si il existe au moins une phrase terminant par ". " alors pour le nobre de sequence ". " rencontré dans le texte je recupere la phrase precedente de la sequence ". " dans une variable "phrase" j'efface la phrase precedente de la sequence ". " avec le '.' fin pour je recupère le reste du texte. si non je récupère le texte dans sont integrallité. fin si
ex : j'envoi "a. b. c. d",
je reçois :
d
d
d
d
je dois avoir fait une grosse bétise, .. si grosse que je ne la vois pas
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 Tampon.Avaible(Avaible); if Avaible then Tampon.Relever(Message); declare Line : String(1..Message.Contenu.all'Length+1) := ' ' & Message.Contenu.all; count : Natural := Ada.Strings.Fixed.count(Line,". "); begin if Count /= 0 then for I in 1..count loop declare Phrase : String(1..Index(Line,". ")-Index_Non_Blank(Line)) := Line(Index_Non_Blank(Line)..Index(Line,". ")-1); begin Line(Index_Non_Blank(Line)..Index(Line,". ")) := (others => Character'Val(32)); end; end loop; declare Phrase : String(1..Index_Non_Blank(Line,Backward)- (Index_Non_Blank(line)-1)) := Line(Index_Non_Blank(Line)..Index_Non_Blank(Line,Backward)); begin null; end; else null; -- je récupère le text dans son intégralité end if; end;
Merci pour votre cou d'oeuil et si vous avez une meilleur idée, merci aussi.
Partager