Ich befürchte ihr habt den Fragesteller mit euren Lösungen etwas überfordert.
Er hat jetzt zwar funktionierende Lösungen, versteht aber vieleicht nicht wie diese funktionieren.
Deshalb gehe ich noch einmal auf die ursprüngliche Frage ein.
Zahlen ist ein dynamisches Array.
Nach "setlength(zahlen, max);" enthält das Array Elemente für "0" bis "max - 1".
Deine Schleife läuft von "1" bis "max", ein Zugriff "zahlen[max]" ist aber unzulässig.
Bei aktiver Bereichsprüfung gäbe es an dieser Stelle bereits eine Fehlermeldung.
Mein Tip:
Gib allem einen verständlichen Namen (Steuerelemente, Methoden, Variablen).
Zerlege grosse Aufgaben in einzelne kleine Funktionen bzw. Methoden.
Die kann man unabhängig von einander Entwickeln und Testen.
Delphi-Quellcode:
procedure TForm1.ZahlenErstellen(Anzahl, Zahlenbereich: Integer);
var
i: Integer;
begin
SetLength(Zahlen, Anzahl);
for i := 0 to Anzahl - 1 do
begin
Zahlen[i] := Random(Zahlenbereich);
end;
end;
procedure TForm1.ZahlenBubbleSort;
begin
{ TODO : }
end;
function TForm1.ZahlenAlsTextZeilen(MaxProZeile: Integer): string;
var
i, n: Integer;
begin
Result := '';
n := 0;
for i := 0 to Length(Zahlen) - 1 do
begin
{am Anfang der Zeile kein Komma}
if n <> 0 then
Result := Result + ',';
Result := Result + IntToStr(Zahlen[i]);
n := n + 1;
if n = MaxProZeile then
begin
{neue Zeile, Zähler zurücksetzen}
Result := Result + System.sLineBreak;
n := 0;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ZahlenErstellen(StrToInt(edit1.Text), StrToInt(edit2.Text));
ZahlenBubbleSort;
memo1.Lines.Text := ZahlenAlsTextZeilen(10);
showmessage(IntToStr(memo1.Lines.Count));
end;