AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Frage nicht erneut wählen!
Thema durchsuchen
Ansicht
Themen-Optionen

Frage nicht erneut wählen!

Ein Thema von aerotech · begonnen am 23. Jun 2004 · letzter Beitrag vom 23. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
aerotech

Registriert seit: 27. Mai 2004
124 Beiträge
 
#1

Frage nicht erneut wählen!

  Alt 23. Jun 2004, 13:57
Hi, bei meinem Programm ist im Moment eingestellt, das es automatisch eine züfällige Frage aussucht, ist es denn möglich einen vermerk zu machen, sodas nicht 2x die gleiche ausgewählt wird!?

Delphi-Quellcode:
if tquizfragen.FieldByName('L1').AsInteger = 1 then begin
  tquizfragen.first;
  tquizfragen.moveby(random(tquizfragen.RecordCount));

     end else
     Form4.Show;
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#2

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 13:59
Ich kenn mich zwar nicht mit Datenbanken aus, aber du könntest die geladenen Fragen in eine StringList schreiben und dann überprüfen, ob der Eintrag schon existiert oder nicht... 8)
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
aerotech

Registriert seit: 27. Mai 2004
124 Beiträge
 
#3

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:10
Zitat von S2B:
Ich kenn mich zwar nicht mit Datenbanken aus, aber du könntest die geladenen Fragen in eine StringList schreiben und dann überprüfen, ob der Eintrag schon existiert oder nicht... 8)
Gibt es noch ne' ähhhhh einfache Möglichkeit? Und wie amch ich das?
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:16
du könntest das ganze in ein array schreiben und dann abprüfen
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#5

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:16
Angenommen, du hast die Frage in einer Variablen s:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var SL: TStringList;
begin
  SL:=TStringList.Create;
  if SL.IndexOf(s)=-1 then
  begin
    SL.Add(s);
    //Code für die Ausgabe der Frage
  end
    else
  begin
    //Frage wurde schon mal verwendet
  end;
end;
So müsste es gehen!
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:17
und bei dem array müsstest dus mit einer schleife durchgehen sollte ja kein problem sein
Nico Müller
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:24
Angenommen, du hast 100 Fragen (0-99).
Dann füllst du zuerst ein dynamisches Array mit diesen Zahlen und tauscht zufällig immer 2 Einträge aus.

Delphi-Quellcode:
var
   QIndex:array of Integer; // globales Array
   AktuelleFrage:integer;

procedure SetupQIndex;
var
   i, randomIndex,tmp : integer;
begin
   SetLength(QIndex, 100); // 100 Elemente


   for i:=0 to 99 do
      QIndex[i] := i; // Vorbelegung

   // durcheinander bringen
   // zufällig zwei Einträge vertauschen
   for i:=0 to 99 do
   begin
      tmp := QIndex[i];
      randomIndex := Random(100);
      QIndex[i] := QIndex[randomIndex];
      QIndex[randomindex] := tmp;
   end;
   AktuelleFrage := 99;
end;

// hole die Nummer der Frage
function GetNextQIndex:integer;
begin
   if AktuelleFrage < 0 then raise Exception.Create('keine Fragen mehr');
   result := QIndex[AktuelleFrage];
   Dec(AktuelleFrage);
end;
Andreas
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:27
shmia: aber das zufällige kann theoretisch auch werte verlieren oder?
Nico Müller
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#9

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:55
hallo aerotech!

wieso so kompliziert? hänge in deiner tabelle ein zusätzliches feld mit der bezeichnung 'abgefragt' an. beim programmstart stellt du bei allen eingträgen 'abgefragt' auf false und sobald die frage gestellt wurde auf 'true'

du kannst das ganze verfahren noch weiter verfeinern und ein feld 'richtig_beantwortet' anlegen.
so lange dort nicht 'true' steht, darf die frage ausgewählt werden.

mfg, stefan
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Frage nicht erneut wählen!

  Alt 23. Jun 2004, 14:58
Zitat von Nicodius:
shmia: aber das zufällige kann theoretisch auch werte verlieren oder?
Eigentlich nicht. Ein Array wird mit den Zahlen 0..99 befüllt:
[0, 1, 2, 3, ..., 99]
Dann wird jedes Element mit einem zufälligen Element vertauscht:
[78, 1, 2, 3, ..., 99] // 1. Durchgang
[78, 63, 3, ..., 99] // 2. Durchgang
[78, 63, 99, ..., 3] // 3. Durchgang (3<->99)
Ein Element könnte auch mit sich selber vertauscht werden, aber das macht nix.
Nach 100 Vertauschungen ist garantiert Unordnung, obwohl wahrscheinlich schon nach
50 Vertauschungen genügend Unordnung vorhanden ist.
Würde man nun das Array wieder sortieren hätte man wieder die Elemente 0..99.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz