Tri d'un StringGrid sur base d'une colonne contenant des nombres

Résolu
PhilLu
Messages postés
251
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
11 mai 2021
- 4 juin 2013 à 22:30
PhilLu
Messages postés
251
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
11 mai 2021
- 7 juin 2013 à 16:37
Bonsoir,
Je doit trier un stringgrid sur base d'une colonne contenant des nombres.
Voici mon code:
repeat
swap:=False;
for j := 1 to 100 do
if StrToInt(StringGrid2.Cells[11,j])> StrToInt(StringGrid2.Cells[11,j+1]) then
begin
tempstr:=StringGrid2.Rows[j];
StringGrid2.Rows[j] :=StringGrid2.Rows[j+1];
StringGrid2.Rows[j+1]:=tempstr;
swap:=true;
end;
until swap;
Malheureusement, nok et en plus des doublons
Je sêche!!!
Help

20 réponses

solilog
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
10
6 juin 2013 à 14:01
Salut tous,
C'est le rows[] qui déconne, mais le tri est bon. Essaye ca:

Pour cantador je vais mettre des balises, y va pa me filer des baffes quand même, j'en reçois déjà assez comme çà. Mais c'est la 1ere fois que je vois qu'il y a des balises. Je me demandais bien pourquoi les espaces à gauche de mon code n'apparaissait jamais.



procedure TForm1.Button1Click(Sender: TObject);
var x, y, z:integer;
tmpstr : array[0..100] of string;
begin
with gr1 do begin
for x:= 1 to rowcount -1 do
for y := 1 to rowcount-x do
if strtoint(cells[1, y]) > strtoint(cells[1, y+1]) then
for z := 0 to colcount-1 do begin
tmpstr[z] := cells[z,y];
cells[z,y] := cells[z, y+1];
cells[z, y+1] := tmpstr[z];
end;
end; end;




Voilà, en plus j'ai testé sur un stringgrid, j'ai vraiment du temps à perdre.
Ca devrait aller là, non ?
Le tri, c'était il y a ... 40 ans, oui 40 (ou là là, je me fais vieux)

solilog
1