Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Labelfeld mit Zahlen sortieren

  Alt 14. Jan 2006, 19:56
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
  Mit Zitat antworten Zitat