Hallo,
Also ich habe mir dein Programm mal angesehen und den Fehler auch gefunden :
Für jede Zahl die du "in die Hand nimmst" musst du auch alle Elemente durchgehen, am besten auch von vorne nach hinten.
Deine for-Schleife
for j:=N downto i-i do
ergibt eigentlich recht wenig Senn denn i-i ist immer 0
schreibe die for-Schleife also einfach so :
for j:=1 to N-1 do
und es funktioniert wunderbar.
Ach noch was. Wenn du mit vielen Zahlen arbeiten würdest dann braucht dein Programm eine ganze Weile, weil es die Listen immer neuzeichnet. Besser ist es mit BeginUpdate und Endupdate. Zum Beispiel bei deinem Zahlen ausrechnen würde das folgendermaßen aussehen :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
randomize;
setlength(data, N+1);
ListBox1.Clear;
ListBox1.Items.BeginUpdate; // Zeichnet die Liste nicht immer neu
for i:=1 to N do
begin
data[i] := random(raum-1); // "+1" weg, sonst stimmt deine Angabe "Zahlenraum, 0-" nicht :o)
ListBox1.Items.Add(inttostr(data[i]));
end;
ListBox1.Items.EndUpdate; // schliesst Update ab, jetzt erst wird die Liste neu gezeichnet
end;
Herzliche Grüße
Urba