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.
Ein Therapeut entspricht 1024 Gigapeut.