Erreur d'imbrication des boucles? Comparer 2 listbox

dhp9951 Messages postés 10 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 6 novembre 2009 - 29 sept. 2008 à 21:32
dhp9951 Messages postés 10 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 6 novembre 2009 - 29 sept. 2008 à 22:43
Bonsoir, par utilisation des boucles, je veux comparer le contenu d'une listbox2 avec le contenu d'une listebox1 et si un item est identique, copier cet item dans une troisième listbox.

Voici mon code:

procedure TForm1.SpeedButton14Click(Sender: TObject);
var
i,y: integer;
strl2;strl1: string;
begin
for i := 0 to listbox2.ItemIndex - 1 do begin
  strl2 := listbox2.Items[i];
        for y:= 0 to listbox1.ItemIndex -1 do begin
              strl1:= listbox1.Items[y];
              if strl2 = strl1 then listbox3.Items.Add(listbox2.Items[i]);
        end;
end; end;

avec strl1 et strl2 la variable qui stocke les valeurs des items de listbox 1 et 2.
Seulement, à l'execution, rien ne se passe, probablement une erreur dans la gestion des boucles, pourtant, tout a l'ai correct.

ca fait une heure que je tourne autour et n'ai pas trouvé la solution.

Merci pour votre aide

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
29 sept. 2008 à 22:20
procedure TForm1.SpeedButton14Click(Sender: TObject);
var
 i: integer;
begin
  ListBox3.Items.BeginUpdate;
  try
    for i := 0 to listbox2.Count-1 do
      if ListBox1.Items.IndexOf(listbox2.Items[i]) <> -1 then
        listbox3.Items.Add(listbox2.Items[i]);
  finally
    ListBox3.Items.EndUpdate;
  end;
end;




<hr size="2" width="100%" />
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
29 sept. 2008 à 22:24
Salut,

essaye comme ça:

procedure TForm1.btn_GoClick(Sender: TObject);
var I: Integer;
begin
  for I := 0 to ListBox1.Items.Count - 1 do
   if ListBox2.Items.IndexOf(ListBox1.Items[I]) > -1 then
     ListBox3.Items.Add(ListBox1.Items[I]);
end;

 
@+
Cirec

<hr siz="" />
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
29 sept. 2008 à 22:25
arf ... f0xi a été plus rapide que moi

 
@+
Cirec

<hr siz="" />
0
dhp9951 Messages postés 10 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 6 novembre 2009
29 sept. 2008 à 22:43
Merci pour vos réponses mais je dois avoir un probleme ailleurs car aucune de vos deux procedures ne fonctionne.
rien ne s'affiche dans listbox3.
j'ai d'abord cru qu'il fallait que les valeurs soit dans chaque lisbox sur le même n° d'index [i] mais non, ca ne marche pas.
pourtant une prog directe (listbox3.Items.Add(listbox2.Items[0]) fonctionne donc pas de probleme d'entrée de données sur le composant listbox3.

Pour info, je suis sous delphi 2006 et vista
0
Rejoignez-nous