Lebersalz hat in einer PM an mich geschrieben
Genau ich bin grad dabei eine Lottoziehung zu programmieren...Die eigentliche Lottoziehung hab ich auch schon programmiert und dort werden sie auch sortiert ausgegeben... mein problem ist jetzt das ich den eigenen Tipp über 6 Spin Edit Felder gemacht hab und die mit einem TLabelfeld verknüpft hab!
wenn man jetzt aber die Zahlen unsortiert angibt werden diese natürlich auch unsortiert ausgegeben... Hab das Labelfeld mit den Spineditfeldern folgendermaßen verbunden; Label4.caption:=Spinedit1 + Spinedit2+...bis Spinedit6
wenn jetzt Spinedit1 größer ist als Spinedit2 und Spinedit6 ebenfalls noch kleiner sind die ja unsortiert ... wie krieg ich dieses Labelfeld jetzt sortiert???
Du sortierst nicht den Schriftzug auf dem Label, sondern die sechs Zahlen deiner Ziehung - das ist der Trick. Damit du sie sortieren kannst packst du sie alle in einen Container, z.B. ein Array of Integer:
Delphi-Quellcode:
var
aZiehung: array of integer;
begin
SetLength(aZiehung, 6);
aZiehung[0] := SpinEdit1.Value;
aZiehung[1] := SpinEdit2.Value;
// ... den Rest kannst du schon
end;
Wenn du damit fertig bist, verwendest du vielleicht den BubbleSort von Schaedel:
Delphi-Quellcode:
procedure BubbleSort(var Zahlen: array of integer);
var
i, j, zahl: integer;
begin
// vom ersten bis zum vorletzten Eintrag
for i := Low(Zahlen) to Pred(High(Zahlen)) do
// vom nächsten bis zum letzten Eintrag
for j := Succ(i) to High(Zahlen) do
// Ordnung prüfen
if Zahlen[i] > Zahlen[j] then
begin
// vertauschen
zahl := Zahlen[i];
Zahlen[i] := Zahlen[j];
Zahlen[j] := zahl;
end;
end;
Und zum Schluß machst du aus all diesen Zahlen dann wieder eine Zeichenkette:
Delphi-Quellcode:
function ErgebnisStr(const ergebnis: array of integer): String;
var
i: Integer;
begin
for i := Low(ergebnis) to High(ergebnis) do
if Result = ''
then Result := IntToStr(ergebnis[i])
else Result := Result + ' ' + IntToStr(ergebnis[i]);
end;
Freundliche Grüße vom marabu