Entwickler-Ecke
Sonstiges (Delphi) - Sortieren
June84 - Sa 19.06.04 17:11
Titel: Sortieren
Hallo!
Unser Sortierverfahren läuft nicht. Kann uns da jmd helfen? Hier ein Auszug des Quelltextes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); var P: array[1..10] of integer; zs: integer; i, j: integer; begin for i := 1 to 9 do P[i] := StrToInt(stringgrid1.Cells[1, i]);
for j := 1 to 9 do for i := 1 to 8 do if P[i] < P[i + 1] then begin zs := P[i]; P[i] := P[i + 1]; P[i + 1] := zs; end; end; |
Kommen auch mit dem Stringgrid nicht so ganz klar. Sind dankbar für jeden noch so kleinen Vorschlag!!!
Moderiert von
Motzi: Delphi-Tags hinzugefügt.
Aton - Sa 19.06.04 17:34
Hallo und Grüße nach Stralsund.
Bei mir geht's? Mit welcher Folge läufts denn nicht?!
Oder habt ihr nur vergessen, die Werte wieder in StringGrid zu schreiben?
Gruß Jens.
June84 - Sa 19.06.04 19:30
Hallo Jens!
Bei dir funktioniert das Programm soweit? Hmm, dann muss unser Fehler ja woanders liegen. Wir haben ein Stringgrid in das PLZ und dazugehörige Städtenamen eingetragen werden sollen. Und in einem 2.Stringgrid sollen die PLZ mit zugehörigen Namen geordnet ausgegeben werden. Vielleicht haben wir das Stringgrid falsch deklariert oder so. Und wie bekommen wir es hin, dass, wenn die PLZen geordnet sind auch die Städte in richtiger Reihenfolge in der Spalte daneben stehen?
Gruß
Rita+Anne
Ich Bins - Sa 19.06.04 22:17
Warum genau geht dass Array P von 1 bis 10 wenn später nur 9 Werte zugewiesen werden?
Weiterhin schließe ich mich Aton an, habt ihr die sortierten Werte auch in das Stringgitter geschrieben? Weil mit der Prozedur die ihr da habt werden zwar die Werte eingelesen und sortiert, aber nicht wieder ins Stringgitter geschrieben, d.h. da stehen nach wie vor die unsortierten Werte drin.
Aton - So 20.06.04 10:45
Hallo Rita und Anne,
ihr könntet die Orte zusammen mit den PLZ sortieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button1Click(Sender: TObject); var aPLZ: array[1..10] of Integer; aOrt: array[1..10] of string; iTemp: Integer; sTemp: string; i, j: integer; begin for i:= 1 to 9 do begin aPLZ[i]:= StrToInt(StringGrid1.Cells[1,i]); aOrt[i]:= StringGrid1.Cells[2, i]; end;
for j:= 1 to 9 do for i:= 1 to 8 do if aPLZ[i]< aPLZ[i + 1] then begin iTemp := aPLZ[i]; aPLZ[i] := aPLZ[i + 1]; aPLZ[i + 1] := iTemp; sTemp:= aOrt[i]; aOrt[i]:= aOrt[i+ 1]; aOrt[i+ 1]:= sTemp; end;
for i := 1 to 9 do begin StringGrid2.Cells[1, i]:= IntToStr(aPLZ[i]); StringGrid2.Cells[2, i]:= aOrt[i]; end; end; |
Zur Zeit können natürlich nur 9 Werte sortiert werden. Wenn ihr es nach oben offen haben wollt, solltet ihr euch dynamische arrays anschauen.
Gruß Jens.
June84 - So 20.06.04 15:55
Danke für die Hinweise und Vorschläge. :D Was müssen wir denn machen damit die Plzen und Namen auch sortiert ausgegeben werden und nicht weiterhin unsortiert im Stringgrid stehen?
EUOCheffe - So 20.06.04 16:59
Naja, ihr müsst die Namen eben gleich beim Sortieren der PLZ mitverschieben. Ohne den Code jetzt genau zu studieren, glaube ich, dass Aton dies so gemacht hat. Also studiert mal schön seinen Code und die Erleuchtung sollte folgen.
June84 - Di 22.06.04 13:19
Danke für den Quelltext Aton. Programm funktioniert endlich. *freu* Es gibt nur noch ein klitze kleines Problem: Wenn man nun die Städte zuerst ordnet, gibt das Programm die Stadt mit dem letzten Buchstaben nicht aus, und schreibt auch nicht die korrekte PLZ daneben.
Bsp.:
Berlin 76356 -> _______ 42 ??????????
Stralsund 18439 Berlin 76356
München 56289 Kiel 28957
Kiel 28957 München 56289
Hat jmd ne Idee woran das liegen könnte???
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!