Trier une liste en fonction d'une autre

Contenu du snippet

Trier une liste en fonction du tri d'une autre dans un intervalle spécifié.

Vous voulez trier Liste1, mais chaque Item de Liste1 est lié à l'Item de même rang dans Liste2. Grâce à ce code, quand l'Item N°x de Liste1 est déplacé au rang N, l'Item N°x de Liste2 est aussi déplacé au rang N.

Le tri est alphabétique. Il faut cependant que les listes comportent au moins un Item, et il faut bien sûr qu'elles aient le même nombre d'items.

Source / Exemple :


procedure StrLstDoubleSort(FirstList, SecondList: TStrings; L, R: Integer);
var I,J : integer;
    P,T : string;
begin
  if (FirstList.Count<>SecondList.Count) or
     (FirstList.Count<1) or
     (SecondList.Count<1) then Exit;
  repeat
    I:=L;
    J:=R;
    P:=FirstList[(L + R) shr 1];
    repeat
      while AnsiCompareText(FirstList[I],P)<0 do
        Inc(I);
      while AnsiCompareText(FirstList[J],P)>0 do
        Dec(J);
      if I<=J then
        begin
    //bouge la première liste
          T:=FirstList[I];
          FirstList[I]:=FirstList[J];
          FirstList[J]:=T;
    //bouge la deuxième liste
          T:=SecondList[I];
          SecondList[I]:=SecondList[J];
          SecondList[J]:=T;
    //change les variables
          Inc(I);
          Dec(J);
      end;
    until I>J;
    if L<J then
      StrLstDoubleSort(FirstList, SecondList, L, J);
    L:=I;
  until I>=R;
end;

Conclusion :


Vous pouvez toujours aller visiter http://altert.family.free.fr/

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.