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 :

Parcours de liste


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Parcours de liste
    Bonjour

    Dans le petit bout de code suivant, je suis sensé :
    - aller en fin de liste
    - remonter la liste jusqu'à une taille de page atteinte

    - afficher la liste à partir de la position courante jusqu'à la fin.


    Ainsi je n'afficher que les dernière ligne qui rentre à l'écran.

    Le problème alors que ça devrai fonctionner malgrès les grosse dernière modification que j'ai appliqué, c'est que la liste commence toujours l'affichage au début de liste.

    Donc il y a une erreur dans la première boucle.

    Voici le code

    The_Page est la liste, The sentence est une ligne courante extérieur à la boucle

    En gros, à chaque élément de la liste, je supprime 1 d'un compteur de ligne,
    Quand le compteur arrive à zéro, je sort. Normalement, c'est ça.


    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
     
    if Files.Length(The_Page.all) /= 0 then
                      Files.To_End(The_Page.all);
                      Save_Count_Line := Count_Line;
                      loop
                         Input_Access := new String '
                           (Words_List_To_String
                            (Files.Current_Content(The_Page.all)));
                         if The_Sentence_Access /= null and then
                           Count_Line - (((Input_Access'Length+2)/80 + 1) + ((The_Sentence_Access'Length+2+The_index)/80)) > 0 then
                            null;
     
                         elsif The_Sentence_Access = null and then Count_Line - ((Input_Access'Length+2)/80 + 1) > 0 then
                              null;
                         elsif not Files.In_End(The_Page.all) then
                            Files.To_next(The_Page.all);
                            Free(Input_Access);
                            exit;
                         end if;
     
                         Free(Input_Access);
                         if Files.In_Head(The_Page.all) then
                            exit;
                         end if;
                         Files.To_Predecessor(The_Page.all);
                      end loop;
                      Count_Line := Save_Count_Line;
                      loop
     
                         Input := Files.Current_Content(The_Page.all);
     
                         Input_Access := new String ' (Words_List_To_String(Input));
     
                         if The_Sentence_Access /= null and then
                           Count_Line - (((Input_Access'Length+2)/80 + 1) + ((The_Sentence_Access'Length+2+The_index)/80)) > 0 then
     
                            Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
                            if Input_Access /= null then
                               Put_line("- " & Input_Access.all);
                            end if;
     
                         elsif The_Sentence_Access = null and then Count_Line - ((Input_Access'Length+2)/80 + 1) > 0 then
                            Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
     
                            if Input_Access /= null then
                               Put_line("- " & Input_Access.all);
                            end if;
                         end if;
                         Free(Input_Access);
                         exit when Files.In_End(The_Page.all);
                         Files.To_next(The_Page.all);
                      end loop;
                   end if;
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bon, désolé, j'ai fait une erreur de manipulation de fichier.


    Le problème doit être plus simple du coup

  3. #3
    Invité
    Invité(e)
    Par défaut le bon code
    Le bon code c'était ça

    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
     
    if Files.Length(The_Page.all) /= 0 then
                      Files.To_End(The_Page.all);
                      Save_Count_Line := Count_Line;
                      loop
                         Input_Access := new String '
                           (Words_List_To_String
                            (Files.Current_Content(The_Page.all)));
                         if The_Sentence_Access /= null and then
                           Count_Line - (((Input_Access'Length+2)/80 + 1) + ((The_Sentence_Access'Length+2+The_index)/80)) >= 0 then
                            null;
                            Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
                         elsif The_Sentence_Access = null and then Count_Line - ((Input_Access'Length+2)/80 + 1) >= 0 then
                              Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
                         elsif not Files.In_End(The_Page.all) then
                            Files.To_next(The_Page.all);
                            Free(Input_Access);
                            exit;
                         end if;
     
                         Free(Input_Access);
                         if Files.In_Head(The_Page.all) then
                            exit;
                         end if;
                         Files.To_Predecessor(The_Page.all);
                      end loop;
                      Count_Line := Save_Count_Line;
                      loop
     
                         Input := Files.Current_Content(The_Page.all);
     
                         Input_Access := new String ' (Words_List_To_String(Input));
     
                         if The_Sentence_Access /= null and then
                           Count_Line - (((Input_Access'Length+2)/80 + 1) + ((The_Sentence_Access'Length+2+The_index)/80)) >= 0 then
     
                            Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
                            if Input_Access /= null then
                               Put_line("- " & Input_Access.all);
                            end if;
     
                         elsif The_Sentence_Access = null and then Count_Line - ((Input_Access'Length+2)/80 + 1) >= 0 then
                            Count_line :=
                              Count_line - ((Input_Access'Length+2)/80 + 1);
     
                            if Input_Access /= null then
                               Put_line("- " & Input_Access.all);
                            end if;
                         end if;
                         Free(Input_Access);
                         exit when Files.In_End(The_Page.all);
                         Files.To_next(The_Page.all);
                      end loop;
                   end if;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcours de liste
    Par mikado_O dans le forum Langage
    Réponses: 5
    Dernier message: 02/10/2008, 08h38
  2. Parcours de liste avec suppression d'éléments
    Par biaggi dans le forum Langage
    Réponses: 2
    Dernier message: 11/09/2008, 10h00
  3. Parcours de listes de structures
    Par Guulh dans le forum C#
    Réponses: 6
    Dernier message: 25/04/2008, 13h29
  4. Bouclage d'un parcours de liste
    Par kubowsky dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 22/04/2008, 10h24
  5. [débutant] Parcours de liste, déboggage
    Par titpuce dans le forum Langage
    Réponses: 13
    Dernier message: 26/02/2007, 09h42

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