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 Code
For 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.