Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.214 Beiträge
 
Delphi 12 Athens
 
#3

Re: Wörter alphabetisch Sortieren!

  Alt 7. Jan 2004, 17:32
Wenn weniger als 30 Zeilen im Memo sind, dann wird irgendwie der Zähler durcheinander gebracht.
Und das Programm reagiert anders als es soll.

Bei mir ist zum Beispiel i = 29 im 1. Durchlauf, obwohl es ja bei diesem CodeFor i := 0 to 28 do Begin i = 0 sein sollte. Demnach gibt es auch einen netten Zugriffsfehler.
Code:
If Namen[i, k] <> Namen[[color=red]i + 1[/color], k] Then
Namen[30] existiert ja nicht.

Davon abgeseh'n funktioniert deine Sortierfunktion nicht.

Delphi-Quellcode:
Uses Math;

Var Namen: Array[0..29] of String;

Procedure TForm1.Button1Click(Sender: TObject);
  Var i, k: Integer;
    Temp: String; // Temporäre Variable

  Begin
    {Namen einlesen}
    For i := 0 to 29 do Namen[i] := '';
    For i := 0 to Min(29, Memo1.Lines.Count - 1) do
      Namen[i] := Memo1.Lines[i];
    {Sortieren}
    For i := 0 to 28 do Begin
      k := 1;
      Repeat
        If Namen[i, k] <> Namen[i + 1, k] Then
        If Namen[i, k] > Namen[i + 1, k] Then Begin
          temp := Namen[i];
          Namen[i] := Namen[i + 1];
          Namen[i + 1] := temp;
        End;
      Until (Namen[i, k] <> Namen[i + 1, k]);
      Inc(k);
    End;
    {Namen ausgeben}
    Memo1.Lines.Clear;
    For i := 0 to 29 do
      If Namen[i] > 'Then Memo1.Lines.Add(Namen[i]);
  End;
Ach ja, ich hab nur das Ein- und Auslesen der Namen überarbeitet, das funktioniert jetzt ohne Probleme.
An der Sortierfunktion wurde nichts geändert, da ich einfach nicht kapiere, was du da machen willst.
$2B or not $2B
  Mit Zitat antworten Zitat