Entwickler-Ecke

Algorithmen, Optimierung und Assembler - im StringGrid sortieren


Fischman - Do 21.07.05 11:37
Titel: im StringGrid sortieren
Hallo erstmal,
ich habe ein StringGrid mit den Feldern Name,Bahn1 bis Bahn6 und das Ergebnis.Jetzt möchte ich die Zeile also 8 Zellen so sortieren das der beste Bowler an erste Stelle
steht und die nachfolgenden ihre Plätze erhalten.Gibt es da eine möglichkeit mir weiter
zu helfen.

Gruß Uwe


Moderiert von user profile iconChristian S.: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Sa 23.07.2005 um 12:38


Gausi - Do 21.07.05 12:03

Hast du die Bowler nur in dem StringGrid, oder hast du die Bowler auch in einer weiteren Datenstruktur, z.B. einer Liste oder einem Array?
Dann würde ich die Liste nach dem Wert "Punkte" sortieren, und das StringGrid neu füllen.
Rein über das StringGrid zu sortieren dürfte stelle ich mir grade schwierig vor. Zeig mal n bissel, was du so an Code hast.


Narses - Do 21.07.05 12:03

Moin!

Die Forum-Suche, dein unbekannter Freund und Helfer Suche in: Delphi-Forum, Delphi-Library STRINGGRID AND SORTIEREN. Oder guckst du hier [http://www.delphi-forum.de/viewtopic.php?p=196207#196207].

cu
Narses

//EDIT: zu spät... :wink:


Fischman - Do 21.07.05 13:43

Ich habe noch keinen Code fürs Sortieren und ich habe nur StringGrid dafür deshalb frage ich ja hier nach.Ich schaue mir heute Abend denn Sourcecode von Narses noch an.So ich muß gleich zur arbeit.aber erstmal schon schönen Dank.

Gruß Uwe


Fischman - Fr 22.07.05 12:24

So jetzt kann ich die Ergenisse sortieren an ein Beispiel hier was ich erstellt habe.Jetzt müßte ich nur noch Ergenisse mit verschieben können pro Bahn(Integer) und der Name(String).Also die Cells[0 bis 6,1] sollen sich mit verschieben werden wenn sich die sache ändert beim sortieren.Und die anderen zellen halt auch.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm2.Button3Click(Sender: TObject);
var MyList: TStringList;
begin
// Ergebnisse in TStringList einfügen
MyList := TStringList.Create;
MyList.Add(StringGrid1.cells[7,1]);
MyList.Add(StringGrid1.cells[7,2]);
MyList.Add(StringGrid1.cells[7,3]);
// Ergebnisse sortiern
Mylist.Sort;
// Erbenisse sortiert ausgeben
StringGrid1.Cells[7,1] := MyList.Strings[0];
StringGrid1.Cells[7,2] := MyList.Strings[1];
StringGrid1.Cells[7,3] := MyList.Strings[2];
MyList.Free;
end;


Gruß Uwe

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.


Narses - Fr 22.07.05 12:49

Moin!

user profile iconFischman hat folgendes geschrieben:
Jetzt müßte ich nur noch Ergenisse mit verschieben können pro Bahn(Integer) und der Name(String).Also die Cells[0 bis 6,1] sollen sich mit verschieben

Mag sein, mein Code hier [http://www.delphi-forum.de/viewtopic.php?p=196207#196207] ist ein Paradebeispiel für Ineffizienz, aber es werden alle Spalten einer Zeile des StringGrids mit sortiert (Button2Click).

cu
Narses


Fischman - Sa 23.07.05 01:05

Hallo Narses,
das ist ja auch gut für Dich das in einer Zeile alle Spalten mit geordnet werden.Aber genau da ist bei mir aber nicht Sinnvoll weil man dann nicht mehr nachvollziehen kann was für ein Ergebniss beim Bowling pro Bahn war.Wenn du das verstehst,ist auch nicht böse gemeint.

Gruß Uwe