Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Quiz Antworten auf Buttons anzeigen (https://www.delphipraxis.net/173260-quiz-antworten-auf-buttons-anzeigen.html)

mylow 14. Feb 2013 13:18

Quiz Antworten auf Buttons anzeigen
 
Hi^^
Ich bin eine der vielen, die ein Quiz programmieren wollen (ich hab mich mal ein wenig bei euch umgeschaut ;) )
Ich hab eine kleine Frage.
Also, die Fragen für das Quiz, die zufällig ausgewählt werden, werden mir bereits angezeigt.
Jetzt bräuchte ich hilfe bei den Antworten.
Die sollen auf Buttons angezeigt werden und wenn man drauf klickt "Richtig" oder "Falsch" angezeigt werden.
Zu jeder Frage gibt es 4 Antworten.
Ich habe keine Datenbank und keine INI's verwendet, sondern arrays.
Jetzt hab ich mir gedacht, dass es ungefähr so aussehen sollte:
Code:
 procedure MusikAntworten;
 begin
    if Frage[1]=true then

   Antwort[1]:='a) 1824';
   Antwort[2]:='b) 1825';
   Antwort[3]:='c) 1826';
   Antwort[4]:='d) 1827';
Ich weiß jetzt nicht so genau, wie ich das machen soll, also was hinter "then" stehen muss und ob das hinter "if" überhaupt so geht :/
Ich hoffe ihr wisst was ich meine^^

DeddyH 14. Feb 2013 13:21

AW: Quiz Antworten auf Buttons anzeigen
 
Hallo und Willkommen in der DP :dp:,

ich verstehe nicht ganz, was DB oder Ini mit Arrays zu tun haben sollen. Trotzdem: wie sind die Arrays denn deklariert, soll heißen: array of was?

mylow 14. Feb 2013 13:22

AW: Quiz Antworten auf Buttons anzeigen
 
array of string :)

ich wollt nur klar machen, dass ich die Antworten/Fragen nicht dort gespeichert hab^^

DeddyH 14. Feb 2013 13:25

AW: Quiz Antworten auf Buttons anzeigen
 
Ich weiß nicht, ob Du Records kennst. Falls ja, könntest Du Dir doch ein array of record deklarieren, in dem jeder Record die Frage, die richtige Antwort und die 3 falschen Antworten enthält.

Jumpy 14. Feb 2013 13:26

AW: Quiz Antworten auf Buttons anzeigen
 
du brauchst auf jeden Fall ein begin...end, wenn du mehrere Anweisung nach dem then haben willst:

Delphi-Quellcode:
if Frage[1]=true then
  begin
  Antwort[1]:='a) 1824';
  Antwort[2]:='b) 1825';
  Antwort[3]:='c) 1826';
  Antwort[4]:='d) 1827';
  end;
wobei wenn Frage ein Array vom Typ Boolean ist, dann ist es besser nicht noch mit True zu vergleichen, du hast ja schon einen Boolean-Wert, somt reicht:

if Frage[1] then
...

Jetzt hab ich aber nur noch nicht verstanden, was du überhaupt willst. Text auf Button schreiben?
Angenommen du hast Button1-4 dann:

Button1.Caption:=Antwort[1]
Button2.Caption:=Antwort[2]
Button3.Caption:=Antwort[3]
Button4.Caption:=Antwort[4]

mylow 14. Feb 2013 13:28

AW: Quiz Antworten auf Buttons anzeigen
 
Frage und Antwort sind vom Typ string.
Nein, mit records hab ich noch nicht gearbeitet...

DeddyH 14. Feb 2013 13:29

AW: Quiz Antworten auf Buttons anzeigen
 
String kann nicht true sein, höchstens 'true'. Aber das bringt Dich wohl kaum weiter.

mylow 14. Feb 2013 13:34

AW: Quiz Antworten auf Buttons anzeigen
 
Deswegen wollt ich ja wissen, was ich stattdessen hinschreiben muss :/
Also es soll so sein, dass "Wenn die Frage ausgewählt wurde, dann sollen auf den Buttons die entsprechenden Antworten erscheinen."

Code:
 if Frage[1]=true then

   Form2.Button1.Caption:=Antwort[1]:='a) 1824';
   Form2.Button2.Caption:=Antwort[2]:='b) 1825';
   Form2.Button3.Caption:=Antwort[3]:='c) 1826';
   Form2.Button4.Caption:=Antwort[4]:='d) 1827';

DeddyH 14. Feb 2013 13:37

AW: Quiz Antworten auf Buttons anzeigen
 
Delphi-Quellcode:
type
  TQuizfrage = record
    Frage,
    Richtig,
    Falsch1,
    Falsch2,
    Falsch3: string;
  end;
So hast Du alle benötigten Daten beisammen.

mylow 14. Feb 2013 13:43

AW: Quiz Antworten auf Buttons anzeigen
 
Ich würde eher ungern mit records arbeiten, auch wenn es so "bequemer" ist :/
Also wenn jemand noch ne andere Antwort hat wär's cool :)

cookie22 14. Feb 2013 13:45

AW: Quiz Antworten auf Buttons anzeigen
 
Delphi-Quellcode:
if Frage[1]=true then
tausch das mal besser gegen
Delphi-Quellcode:
if Frage[1] then
aus. Gewöhn dir das mit = True und False gar nicht erst an.

DeddyH 14. Feb 2013 13:47

AW: Quiz Antworten auf Buttons anzeigen
 
Wenn Dir Records nicht zusagen, kannst Du Dir auch eine Klasse bauen. Oder die Frage samt aller Antworten in einen String schreiben (mit einem Trennzeichen) und an diesem Trennzeichen wieder zerlegen. Oder eine TStringlist verwenden. Oder eine Datenbank. Such Dir was aus, ich würde immer noch die Records verwenden, das ist sicher und mit geringem Aufwand realisiert.

mylow 14. Feb 2013 13:49

AW: Quiz Antworten auf Buttons anzeigen
 
Zitat:

Zitat von cookie22 (Beitrag 1203537)
Delphi-Quellcode:
if Frage[1]=true then
tausch das mal besser gegen
Delphi-Quellcode:
if Frage[1] then
aus. Gewöhn dir das mit = True und False gar nicht erst an.

Dann wird mir nur gesagt, dass der Ausdruckstyp boolean sein muss :/

Code:
 //Sucht zufällig eine Frage aus dem Bereich Musik aus.

 procedure MusikFrageAussuchen  ;
  begin
   r:=0;
   randomize;
   r:=random(5)+1;
    Frage[1]:='In welchem Jahr ist Beethoven gestorben?';
    Frage[2]:='Wie viele Sätze hat eine Sinfonie?';
    Frage[3]:='Von wann bis wann ging die Barockzeit?';
    Frage[4]:='Wer war kein berühmter Komponist der Wiener Klassik?';
    Frage[5]:='Wie nennt man das Instrument "Geige" noch?';
  end;

//Zeigt die Musik-Antworten auf den Buttons an

 procedure MusikAntworten;
 begin
    if Frage[1] then
   Form2.Button1.Caption:=Antwort[1]:='a) 1824';
   Form2.Button2.Caption:=Antwort[2]:='b) 1825';
   Form2.Button3.Caption:=Antwort[3]:='c) 1826';
   Form2.Button4.Caption:=Antwort[4]:='d) 1827';

DeddyH 14. Feb 2013 13:50

AW: Quiz Antworten auf Buttons anzeigen
 
Was willst Du mit der Abfrage eigentlich bezwecken?

mylow 14. Feb 2013 13:52

AW: Quiz Antworten auf Buttons anzeigen
 
Ich hab mal ein bisschen mehr Quelltext oben eingefügt :)

DeddyH 14. Feb 2013 13:55

AW: Quiz Antworten auf Buttons anzeigen
 
Das bringt aber auch nicht mehr Klarheit. Müsstest Du nicht die mysteriöse Variable r abfragen?

mylow 14. Feb 2013 13:57

AW: Quiz Antworten auf Buttons anzeigen
 
Ahhh ja okay, ich glaub ich hab's, danke ;)

DeddyH 14. Feb 2013 14:00

AW: Quiz Antworten auf Buttons anzeigen
 
Wir sind gespannt ;)

mylow 12. Mär 2013 07:24

AW: Quiz Antworten auf Buttons anzeigen
 
Da das vorige ja so super geklappt hat, hab ich noch ne ähnliche Frage.
Und zwar möchte ich jetzt, dass entweder "Richtig" oder "Falsch" angezeigt wird, wenn der entsprechende Antwortbutton geklickt wird.
Allerdings funktioniert die if Bedingung mal wieder nicht :/
(ich hab damit aber auch Probleme XD)

Delphi-Quellcode:
 if Form2.Button4.Click then ShowMessage('RICHTIG')
     else ShowMessage('FALSCH')
Mir wird wieder angezeigt, "Ausdruckstyp muss Boolean sein" ? :)

DeddyH 12. Mär 2013 07:31

AW: Quiz Antworten auf Buttons anzeigen
 
Delphi-Quellcode:
if RichtigeAntwort then
  ShowMessage('Richtig')
else
  ShowMessage('Falsch');
Die Boolean-Funktion RichtigeAntwort musst Du natürlich noch schreiben.

mylow 14. Mär 2013 12:31

AW: Quiz Antworten auf Buttons anzeigen
 
Ich würde das ganze gern ohne eine function machen, da ich das Ganze noch nicht gelernt habe.
Irgendwelche anderen Ideen, wie ich die richtige Antwort bei ButtonClick abfragen kann? :)
(meinetwegen auch ohne if Bedingung XD)

DeddyH 14. Mär 2013 12:53

AW: Quiz Antworten auf Buttons anzeigen
 
Dann vergleich halt inline, ohne If wird es aber wohl nicht gehen.

mylow 14. Mär 2013 13:11

AW: Quiz Antworten auf Buttons anzeigen
 
Problem gelöst :)
Verwende stattdessen jz RadioButtons...
Hätt ich auch früher drauf kommen können...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 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