Bonjour,
Lazarus version: 1.5
Lazarus svn revision: 49541 (SVN)
Lazarus build date: 2015/07/13
Lazarus was compiled for i386-win32 sous W7 64b
Lazarus was compiled with fpc 3.1.1 (SVN).
Dans une TStringList je veux supprimer les chaînes vides. Comme le programme provoque une erreur, j'ai fait un petit programme de test utilisant la même logique qui reproduit systématiquement la même erreur. Le voici dans le onclick d'un bouton.
Il lève systématiquement l'erreur "List index (2) out of bounds" lors du delete(2) lorsque cet item est devenu le dernier de la liste (affichée dans le showmessage pour vérifier).
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 procedure TForm1.Button1Click(Sender:TObject); var i,j:Integer; s:string; MaListe:TStringList; begin MaListe:=TStringList.Create; try MaListe.Add('une chaîne'); MaListe.Add('une autre'); repeat MaListe.Add(''); until MaListe.Count=10; MaListe.Delete(MaListe.Count-1);//là on peut supprimer le dernier item i:=0; while i<MaListe.Count do begin while (MaListe[i]='') and (i<MaListe.Count) do begin s:='Index à supprimer : '+IntToStr(i); for j:=0 to MaListe.Count-1 do s:=s+LineEnding+'J= '+IntToStr(j)+' : '+MaListe[j]; ShowMessage(s);//pour vérifier le contenu de MaListe MaListe.Delete(i);//erreur à l'index 2 end; inc(i); end; finally MaListe.Free; end; end;
Ai-je fait une erreur quelque part ou est-ce une anomalie de cette version mise à jour sur les serveurs SVN?
Merci.
André
Edit: Bon..Sous Delphi 7 j'ai la même erreur, mais je ne comprend toujours pas pourquoi
![]()
Partager