rucifurul
Messages postés3Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention19 novembre 2010
-
21 juin 2010 à 07:06
rucifurul
Messages postés3Date d'inscriptionmercredi 18 avril 2007StatutMembreDernière intervention19 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 :(((
cs_yanb
Messages postés271Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention 7 juillet 202214 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;