1 2
| Tot:=TVLE.RowCount;
while Tot>1 do begin {Ignore la ligne des titres } |
Vu que le nombre d'iteration est connu a l'avance (RowCount) j'opterais plutot pour une boucle for :
For i := 1 to TVLE.RowCount-1 do
On part de 1 pour eviter la ligne 0 si j'ai bien compris (ligne des titres) et on termine a RowCount-1 car pour N Lignes les indices vont de 0 a N-1
[EDIT] Par contre dans ce genre de cas ou la taille du tableau a parcourir diminue en cours de boucle je te conseile de faire au sein de la boucle
ou bien de faire une boucle for decrementale (For ... Downto ... do)
1 2
| TVLE.DeleteRow(Tot-1);
Tot:=TVLE.RowCount; |
La est ton erreur : Tu delete bien Tot-1 car Tot est initialisé a RowCont et TVLE possede pour dernier incide RowCount-1 donc Tot-1
Personnelement j'aurais plutot placé uen variable ID a RowCont-1 et delete la ligne ID ... C'est plus clair a la lecture 
Par contre la ligne suivante reaffecte RowCount a Tot, ce qui parrait normal vu que RowCount devrais maintenant renvoyer une ligne de moins ... mais il semblerais que le systeme de gestion des suppression de ton objet ne l'entende pas de cette maniere. Donc tu conserve un rowcount a 2 et quand tu tente d'acceder a Tot-1, c'est a dire au RowCount original-1 tu tente en fait d'acceder a la ligne que tu viens de supprimer.
D'ou ton erreur.
Je lui prefere le code suivant, plus sur :
Pour l'explication je ne sais pas .... ca parrait etrange en effet.
Partager