![]() |
Problem mit Radom ~ Frage
Hi Leute, wir haben folgendes Problem, das Programm sucht sich durch Radndom eine Zufallsfrage aus und gibt diese aus. Wenn man auf den Richtigen Button geklickt hat (wenn in der TB_Tabelle eine 1 steht) dann soll automatisch eine neue Frage sowie dessen Anwortmöglichkeiten erscheinen.
Leider haben wir jetzt das Problem, wenn das Programm irgendwann die letzte Frage ganz unten in der DB ausgewählt hat, dann geht der Button nicht mehr,...sozusagen er geht nicht zurück und sucht sich ne' neue aus. Egal ob er erstmal ne' Frage 2 mal aussucht,...es soll funzen! :/
Delphi-Quellcode:
procedure TForm1.DBText1Click(Sender: TObject);
begin if tquizfragen.FieldByName('L1').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount)) else showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; procedure TForm1.DBText2Click(Sender: TObject); begin if tquizfragen.FieldByName('L2').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount)) else showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; procedure TForm1.DBText3Click(Sender: TObject); begin if tquizfragen.FieldByName('L3').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount)) else showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; procedure TForm1.DBText4Click(Sender: TObject); begin if tquizfragen.FieldByName('L4').AsInteger = 1 then tquizfragen.moveby(random(tquizfragen.RecordCount)) else showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; |
Re: Problem mit Radom ~ Frage
Moin moin
wie wärs mit:
Delphi-Quellcode:
Analog dann bei den anderen Buttons.
if tquizfragen.FieldByName('L1').AsInteger = 1 then begin
tquizfragen.first; //<- tquizfragen.moveby(random(tquizfragen.RecordCount)); end else showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; schönen Gruß Sam |
Re: Problem mit Radom ~ Frage
Hi aerotech :hi: ,
Da der Quellcode ein "Random" enthält, hoffe ich, dass vorher (nur) 1 mal "Randomize" aufgerufen wurde (im FormCreate oder so). Des weiteren kann "RecordCount" 0 zurückliefern, wenn die jeweilige Tabelle zu viele Felder (oder Datensätze ? :gruebel: ) enthält. Aber das eigentliche Problem: Das "MoveBy" ändert den Datensatz relativ zum aktuellen Datensatz ! Da "RecordCount" aber keine negativen Werte liefert, springt er immer weiter vorwärts, bis (irgendwann) zum letzten Datensatz. Versuchs mal so:
Delphi-Quellcode:
procedure TForm1.DBText1Click(Sender: TObject);
begin if TQuizfragen.FieldByName('L1').AsInteger = 1 then begin TQuizfragen.First; // <-- Setzt das DataSet auf den 1. Datensatz zurück. // Jetzt kann er sich den Datensatz aussuchen ... TQuizfragen.MoveBy(Random(TQuizfragen.RecordCount)); end else Showmessage('Diese Antwortmöglichkeit war leider Falsch'); end; [edit] war mal wieder zu langsam ... ... aber doppelt hält besser ! :mrgreen: [/edit] |
Re: Problem mit Radom ~ Frage
Danke, funzt! :thuimb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 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 by Thomas Breitkreuz