Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 6 aus 49 will nicht so richtig (https://www.delphipraxis.net/140545-6-aus-49-will-nicht-so-richtig.html)

funkuchn 20. Sep 2009 16:38

Re: 6 aus 49 will nicht so richtig
 
ja mit diesen Grundfunktionen komm ich auch klar :P
wir hatten jetzt noch was mit memo1.delete oder so, und dass muss i iwie reinbauen...

DeddyH 20. Sep 2009 16:41

Re: 6 aus 49 will nicht so richtig
 
Zunächst einmal sollte man Randomize nur einmalig im Programm aufrufen (z.B. im OnCreate). Und ob die gezogene Zahl bereits im Memo vorhanden ist, bekommst Du mit Memo.Lines.IndexOf heraus (dazu muss die Zahl aber erst in einen String gewandelt werden). Bei weiteren Fragen einfach fragen.

funkuchn 20. Sep 2009 16:45

Re: 6 aus 49 will nicht so richtig
 
wie genau baue ich das Memo.Lines.IndexOf ein? und wo?

DeddyH 20. Sep 2009 16:48

Re: 6 aus 49 will nicht so richtig
 
Aus dem Kopf:
Delphi-Quellcode:
Memo.Lines.Clear;
for i := 1 to 6 do
  begin
    repeat
      Zahl := Random(49) + 1;
    until Memo.Lines.IndexOf(IntToStr(Zahl)) < 0;
    Memo.Lines.Add(IntToStr(Zahl));
  end;

funkuchn 20. Sep 2009 16:52

Re: 6 aus 49 will nicht so richtig
 
und das vergleicht jetzt, ob in dem memo, wo die zahlen zufällig sind, ob da nun eine doppelt vorkommt
oder wie?
(Wenn ja, das Problem hatte ich doch schon gelöst :()

Wolfgang Mix 20. Sep 2009 16:53

Re: 6 aus 49 will nicht so richtig
 
@Opa Deddy
Bei meinem Vorgehen ist eine bereits gezogene Zahl im Lotto-Array mit 0 überschrieben.
Also brauchen keine weiteren Überprüfungen auf Doppelgänger erfolgen.
Es muß am am Ende nur da Lotto-Array auf Nullen überprüft werden.
Zusätzlich entfällt die lästige Sortiererei. ;-)

Gruß

Wolfgang

DeddyH 20. Sep 2009 16:54

Re: 6 aus 49 will nicht so richtig
 
Mein Code sollte doch nur die Ziehung simulieren, da hab ich wohl etwas falsch verstanden. Sortiert wird da übrigens nix ;)

[edit] Und die Inhalte zweier Memos kann man ja auch mit IndexOf vergleichen. Ist zwar nicht die schnellste Möglichkeit, sollte aber verständlich sein. [/edit]

Wolfgang Mix 20. Sep 2009 16:58

Re: 6 aus 49 will nicht so richtig
 
:-D

funkuchn 20. Sep 2009 17:01

Re: 6 aus 49 will nicht so richtig
 
könntet ihr jetzt meine frage von seite 1 beantworten? :? :wiejetzt:

DeddyH 20. Sep 2009 17:07

Re: 6 aus 49 will nicht so richtig
 
Noch einmal: Du kannst mit IndexOf bestimmen, ob der Eintrag bereits vorhanden ist und somit doppelte Eingaben vermeiden.
Delphi-Quellcode:
procedure TBla.Tippabgeben;
var Zahl: string;
begin
  //ohne Eingabeprüfung auf Zahl, das kannst Du selbst übernehmen
  Zahl := EditEingabe.Text;
  //Memo.Lines nach Zahl durchsuchen
  if MemoTipp.Lines.IndexOf(Zahl) >= 0 then
    begin
      //schon drin
      ShowMessage('Zahl wurde bereits getippt');
      EditEingabe.Clear;
    end
  //noch nicht drin -> eintragen
  else
    MemoTipp.Lines.Add(Zahl);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Seite 2 von 6     12 34     Letzte »    

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 by Thomas Breitkreuz