Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zufallszahlen generieren und in Memo feld ausgeben funktioniert nicht (https://www.delphipraxis.net/173212-zufallszahlen-generieren-und-memo-feld-ausgeben-funktioniert-nicht.html)

fox67 13. Feb 2013 16:06

AW: Zufallszaheln generieren und in Memo feld ausgeben funktioniert nicht
 
Ok hatt geklappt. Vielen Dank

Blup 13. Feb 2013 16:47

AW: Zufallszaheln generieren und in Memo feld ausgeben funktioniert nicht
 
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz