Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahlen "verteilen" (https://www.delphipraxis.net/24699-zahlen-verteilen.html)

Nikolas 25. Jun 2004 20:44

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:
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;
Jetzt kannst du random(99)+1 und listcount < 100 reinschreiben und dann die Liste zerschneiden.
- warum nennst du den Boolean 'disc'?? :gruebel:

TOX

MrKnogge 25. Jun 2004 21:02

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:
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;
@Spurius
Ja ich halte sie noch aus :mrgreen:

Nikolas 25. Jun 2004 21:26

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 Hier im Forum suchenunsort. Hab ich grad ausprobiert, funzt auch ganz schön.

MrKnogge 25. Jun 2004 21:32

Re: Zahlen "verteilen"
 
Mal ne ganz andere Lösung, gute Idee :thuimb:

Spurius 25. Jun 2004 21:42

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

Spurius 25. Jun 2004 21:48

Re: Zahlen "verteilen"
 
So, habs mir doch noch schnell angeschaut.
Delphi-Quellcode:
for b := 0 to List2.Count-1 do // !!! 
   begin
        if Zahl = strtoint(List2[b]) then // !!!
Daran lags denk ich. Ich versteh nicht warum man List2[b] schreiben darf. Da ist ja nichtmal ein Punkt oder sowas dazwischen.
Also nochmal vielen Dank für eure Hilfe!
Gruß
Spurius

MrKnogge 25. Jun 2004 21:53

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]

Nikolas 25. Jun 2004 21:55

Re: Zahlen "verteilen"
 
Zitat:

Zitat von The Fine Manual
Strings stellt die vorgegebene Eigenschaft von TStringList-Objekten dar. Der Bezeichner Strings braucht beim Zugiff auf diese Eigenschaft nicht angegeben zu werden. Die beiden folgenden Code-Zeilen sind gültige Anweisungen und führen zu demselben Ergebnis:

MyStringList.Strings[0] := ‘Das ist der erste String’;
MyStringList[0] := ‘Das ist der erste String’;

Es ist also egal ob man noch ein .strings reinschreibt.

Edit: @ MrKnogge ??? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.
Seite 4 von 4   « Erste     234   

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