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/
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.