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.
Merci pour votre aide
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;
Partager