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

Ada Discussion :

Récupérer une à une chaque phrase d'un texte sur une ligne


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer une à une chaque phrase d'un texte sur une ligne
    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"

    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
    Le problème c'est que je récupère n'importe quoi. ou à peut près n fois le reste du texte.

    ex : j'envoi "a. b. c. d",
    je reçois :
    d
    d
    d
    d

    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;
    je dois avoir fait une grosse bétise, .. si grosse que je ne la vois pas

    Merci pour votre cou d'oeuil et si vous avez une meilleur idée, merci aussi.
    Dernière modification par Alcatîz ; 12/02/2007 à 21h13.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Désolé, je crois que l'erreur est ailleur. Ce code est correcte en fait.

Discussions similaires

  1. [MVVM] Binding xaml sur une List/ObserveableCollection du Model plutôt que sur une propriété du Model
    Par uluquiorra dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 21/11/2012, 18h43
  2. Réponses: 3
    Dernier message: 22/09/2009, 21h34
  3. Réponses: 3
    Dernier message: 11/05/2006, 17h47
  4. Mettre du texte sur une vidéo(ou par dessus un tmediaplayer)
    Par souch dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/07/2004, 13h30
  5. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06

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