Pb sur une listbox

Résolu
rucifurul Messages postés 3 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 19 novembre 2010 - 21 juin 2010 à 07:06
rucifurul Messages postés 3 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 19 novembre 2010 - 21 juin 2010 à 10:23
Coucou a tous ! je debute sur delphi et je cherche de l'aide pour manipuler une listbox.

En gros j ai une listbox qui emet des numeros de registres, et je voudrais supprimer les elements de la listbox qui sont proches.
genre :
listbox.Items.Strings[0] := '232'
listbox.Items.Strings[1] := '234'
listbox.Items.Strings[2] := '346'

J'aimerai enlever l'element 1 ('234') de ma listbox car proche de l'element 0 ('232').
Je post ma fonction.
ps: la listbox n a pas de doublons et les elements sont indexés par ordre croissant.

procedure TrierListbox(var lst : TListBox,int :integer);
// int est l eccart entre 2 registres, si int =2 l element 1 sera supprimer sur l exemple si dessus.
var
ind : Integer;
begin
ind := lst.Items.count - 1;
while ind >= 1 do
begin
while StrToInt(lst.Items.Strings[ind]) - StrToInt(lst.Items.Strings[ind-1]) < int do
begin
lst.Items.delete(ind);
// on decale
dec(ind);
end;
dec(ind);
end;
end;


Cette procedure me donne "apparament" le resultat recherché a part un sale message d'erreur out of bounds -1 :(((

Merci par avance pour l aide :D

2 réponses

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
21 juin 2010 à 09:12
Salut
procedure TrierListBox(var List : TListBox; Int : Integer);
var
    I   : Integer;
begin
    for I := List.Items.Count - 1 downto 1 do
        if (StrToInt(List.Items.Strings[I]) - StrToInt(List.Items.Strings[I-1])) < Int then
            List.Items.Delete(I);
end;

@+yanb
3
rucifurul Messages postés 3 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 19 novembre 2010
21 juin 2010 à 10:23
merci bcp
0
Rejoignez-nous