Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.432 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Zufallszaheln generieren und in Memo feld ausgeben funktioniert nicht

  Alt 13. Feb 2013, 16:47
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;

Geändert von Blup (14. Feb 2013 um 08:27 Uhr) Grund: überflüssige Klammer entfernt
  Mit Zitat antworten Zitat