![]() |
Re: Zahlen "verteilen"
- wofür hast du die erste Stringlist? Die wird gefüllt , aber nicht benutzt. Ich hab mal ein paar Sachen geändert und ich hab jetzt keine doppelten Zahlen mehr:
Delphi-Quellcode:
Jetzt kannst du random(99)+1 und listcount < 100 reinschreiben und dann die Liste zerschneiden.
procedure TForm1.Button1Click(Sender: TObject);
var {a,}b,Zahl: integer; Disc: boolean; begin disc //List := TStringlist.Create; List2 := TStringlist.Create; //for a := 1 to 32 do begin List.Add(inttostr(a)); while List2.Count < 8 do begin Zahl := random(8); // Doppelte sind schneller zu sehen for b := 0 to List2.Count-1 do // !!! begin if Zahl = strtoint(List2[b]) then // !!! Disc := False; end; if Disc = true then List2.Add(IntToStr(Zahl)); Disc := true; end; end; - warum nennst du den Boolean 'disc'?? :gruebel: TOX |
Re: Zahlen "verteilen"
Servus Toxman,
die 2. Schleife hast du für die Überprüfung auf doppelte, oder ? Wenn dem so ist, nimm TStringList.IndexOf(zusuchenderstring), das sparrt eine schleife, und dürfte das ganze übersichtlicher machen. Sollte letztendlich dann so aussehen:
Delphi-Quellcode:
@Spurius
procedure TForm1.Button1Click(Sender: TObject);
var b, Zahl: integer; begin List := TStringlist.Create; while List2.Count < 8 do begin Zahl := random(8); if List.IndexOf(IntToStr(Zahl)) = -1 then List2.Add(IntToStr(Zahl)); end; end; Ja ich halte sie noch aus :mrgreen: |
Re: Zahlen "verteilen"
@ MrKnogge
Ja. Ich hab bis jetzt noch kaum mit Stringlists gearbeitet, kannte den Befehl nicht und hab deswegen die Schleife noch drin. Deine Lösung sieht im Endeffekt sehr sauber aus. :thuimb: Ein ganz anderer Ansatz wär ein ![]() |
Re: Zahlen "verteilen"
Mal ne ganz andere Lösung, gute Idee :thuimb:
|
Re: Zahlen "verteilen"
Also in die erste Stringlist wollte ich die Zahlen von 1-32 reinschreiben und in die zweite die 8 zufälligen Zahlen aus der ersten. Ich werd mir des morgen mal genauer anschauen.
Gruß Spurius |
Re: Zahlen "verteilen"
So, habs mir doch noch schnell angeschaut.
Delphi-Quellcode:
Daran lags denk ich. Ich versteh nicht warum man List2[b] schreiben darf. Da ist ja nichtmal ein Punkt oder sowas dazwischen.
for b := 0 to List2.Count-1 do // !!!
begin if Zahl = strtoint(List2[b]) then // !!! Also nochmal vielen Dank für eure Hilfe! Gruß Spurius |
Re: Zahlen "verteilen"
list2[INDEX] entspricht list2.Strings[INDEX],
ist einfach der bequemlichkeit wegen :wink: [edit]Nein, ich habe nichts an diesem Beitrag geändert, wer etwas anderes gesehen haben will der irrt :mrgreen: [/edit] |
Re: Zahlen "verteilen"
Zitat:
Edit: @ MrKnogge ??? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr. |
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