Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Quiz (https://www.delphipraxis.net/139982-quiz.html)

Mothergrayham 9. Sep 2009 16:26


Quiz
 
Hallo

Ich wette ich nerve jetzt alle hier im Forum mit meinem Problem aber ich weiß keine andere Lösung. Also ich bin vollkommen neu bei Delphi und hab echt keine Ahnung, leider sieht mein Lehrer das anders und will das jeder aus der Klasse ein Projekt macht.

Ich soll ein Quiz in der Art von "Wer wird Millionär" machen. Ziel ist es verschiedene Fragen aus einer Datenbank zuholen die auch verschiedene Schwierigkeitsgrade haben.

So meine Frage ist jetzt wie mache ich das mit der Datenbank, welche nehme ich dafür? Habe auch das Netz schon durchstöbert nur die Beispiele die da sind verstehe ich nicht. Ich weiß auch nicht wie man diese Datenbank dann in das Projekt einfügt.

Ich hoffe mir kann einer etwas helfen. Wäre auf jedenfall echt super.

Danke schon mal.

haentschman 9. Sep 2009 20:57

Re: Quiz
 
Hallo und willkommen in der DP :dp:

Grundsätzliches:
- Deine Hausaufgaben wird dir hier keiner vorkauen. (Hast du bestimmt schon gelesen :wink: )
- bei konkreten Fragen bzw. Lösungsansätzen helfen wir gern. :thumb:


Zitat:

Ziel ist es verschiedene Fragen aus einer Datenbank zuholen
- ist die Anforderung Datenbank eine Idee des Lehrers ?
Zitat:

Ich soll ein Quiz in der Art von "Wer wird Millionär" machen.
- wie groß soll das Projekt werden ? (Anzahl der Fragen)
Zitat:

So meine Frage ist jetzt wie mache ich das mit der Datenbank, welche nehme ich dafür?
- wie sieht denn dein Konzept der Struktur des Programmes aus ?

bis bald... :hi:

DeddyH 9. Sep 2009 21:01

Re: Quiz
 
Ist mit "Datenbank" wirklich ein DBMS gemeint? Ich habe schon öfter erlebt, dass Lehrer dieses Wort recht großzügig auslegen ;) (zumal Datenbank und Delphi 5 Standard nicht so recht zusammenpassen).

False Pretense 9. Sep 2009 21:16

Re: Quiz
 
So wie ich Informatiklehrer kenne, meinen die mit Datenbank wohl 'ne Textdatei, in der die Fragen dann enthalten sind.

Falls das der Fall sein sollte, würde ich dir vorschlagen mit 'ner TStringList zu arbeiten.
Mit der TStringList lässt sich dann die Textdatei einlesen und für dein Quizprogramm auswerten.

Auf eine bestimmte Zeile kannst du dann z.B. mit
Delphi-Quellcode:
var s: String;
begin
{...}
s:= StringList[0];
zugreifen und das dann für dein Quiz verwenden.

//edit: Gute Anwendungsbeispiele der TStringList findest du hier: http://www.delphibasics.co.uk/RTL.asp?Name=TStringList
Die Seite ist zwar auf englisch, aber ich finds gut zusammengefasst und verständlich.

BAMatze 9. Sep 2009 21:23

Re: Quiz
 
Hallo und willkommen in der DP,

Also wenn dich Datenbanken wirklich interessieren und du mal einen kompletten Einblick haben möchtest, kann ich dir wärmsten diesen Link empfehlen, ist ein super Buch, habe ich mir auch besorgt, weiß nur nicht, ob es das noch gibt. Aber sicherlich wird es vergleichbares auf dem Markt geben. Wenn es dich nicht so sehr interessiert, dann benutz mal die SuFu (Suchfunktion) mit "Datenbank", denke dann wirst du von guten Lösungsansätzen, bis teilweise vollständige Lösungen hier finden oder neue Schlagwörter für Datenbanken alles finden. Wenn dir das etwas zu schlecht kommentiert ist, dann gibt es hier super Tutorials für einen Einstieg in Datenbankarbeit.
Du solltest natürlich mit der OOP vertraut sein oder gewillt, dich darin einzuarbeiten, sonst wird es sicherlich sehr schwer und dein Abgabetermin wird sicherlich bald ran sein und du hast nichts. Wenn du dich angagiert zeigst, wirst du schnell feststellen, dass du bei konkreten Fragen (mit Quellcode) in der Regel in sehr kurzer Zeit einen Hinweis bekommst, wie du weiter machen kannst oder sollst. Ich bin hier sehr zufrieden mit den Erfahrungen, die ich sammeln konnte.

Viel Glück bei deinem Projekt
BAMatze

patti 9. Sep 2009 23:06

Re: Quiz
 
Ich denke, dass eine wirkliche Datenbank für so ein Projekt (zumal es "nur" ein Schulprojekt ist) zu viel des Guten wäre, da sich die Problemstellung (wie auch oben schon geschrieben) durch andere Ansätze gelöst werden kann. Eine Alternative zu einer einfachen Stringlist könnte auch eine Ini-Datei sein, da die Handhabung gerade für "Anfänger" vielleicht etwas leichter sein sollte.

MfG,
Patti

Mothergrayham 10. Sep 2009 09:44

Re: Quiz
 
so ich hab jetzt noch mal geschaut hab in der Schule Delphi 5 Professional. Na fertig machen sollte mir das keiner wollte ja schon was allein schaffen.

mein Problem war ja das ich von delphi überhaupt keine ahnung hab.

Es sollten zum Anfang schon so 3 bis 4 Fragen zu jeder Stufe sein. Aber wäre schön wenn man das am ende noch erweitern kann.

Von einer Datenbank wurde nichts gesagt, habe mich im netz aber belesen und und dachte das ist die beste Idee dafür.

Vielen Dank schon mal für die vielen Antworten.

TeronG 10. Sep 2009 09:55

Re: Quiz
 
Datenbank währe wohl nicht schlecht für so ein Project aber für den Anfang evtl. n bissl überdimensioniert.

Ich würde dir eher zu einer INI-Datei raten.
Weil die recht einfach zu handhaben/verstehen ist.
Das Ding ist dann zwar nur zweidimensional (Section, variabel) aber das sollte imho vorerst ja noch reichen. :gruebel:

XML währe auch ne Option aber dann me schon wieder n Tick schwieriger.

patti 10. Sep 2009 10:08

Re: Quiz
 
Nimm für den Anfang eine Ini-Datei, die so aufgebaut sein könnte:

Code:
[ALLGEMEIN]
AnzahlFragen=20
[FRAGE1]
Frage=BlaBlaBla?
Antwort1=XYZ
Antwort2=ABC
Antwort3=Blub
Antwort4=WasWeissIch
RichtigeAntwort=2
[FRAGE2]
Frage=Blub?
Antwort1=...
.
.
.
Am Anfang liest du per

Delphi-Quellcode:
Ini.ReadInteger('ALLGEMEIN','AnzahlFragen',0)
aus, wie viele Fragen in der Ini-Datei stehen und merkst dir diesen Wert.

Dann kannst du in einer Schleife (von 1 bis zu dem geladenen Wert) jede Frage aus der Ini auslesen und beispielsweise in einem Array of Record speichern. Neben ReadInteger solltest du dir dafür auch mal ReadString anschauen.

Bei weiteren konkreten Fragen erhälst du hier sicherlich Hilfe.

Patti

Mothergrayham 10. Sep 2009 12:04

Re: Quiz
 
okay das mit der ini datei hört sich schon mal gut an und auch nicht so schwer. nehme ich für die ini datei einfach den editor und nenne die datei um?

ist es denn damit auch möglich das für jede Stufe verschiedene Fragen gibt. heißt also für die 100€ Frage 3 verschiedene?

DeddyH 10. Sep 2009 12:08

Re: Quiz
 
Nimm doch einfach verschiedene Inis.

TeronG 10. Sep 2009 12:13

Re: Quiz
 
Jo kannst einfach nen editor nehmen.
Die ini muss du auch nicht '*.INI' nennen. Kann auch ruhig *.txt, *.dat, ... heißen.

Zitat:

Zitat von DeddyH
Nimm doch einfach verschiedene Inis.

Entweder das oder du unterteilst deinen "Sectionname".

z.B.: Frage_<stufe>_<nummer>
[Frage_1_1]
[Frage_1_2]
[Frage_1_3]
[Frage_2_1]
...

DeddyH 10. Sep 2009 12:19

Re: Quiz
 
Trotzdem denke ich, dass es (zumindest am Anfang) mit verschiedenen Dateien einfacher zu realisieren ist. Und bevor weitere Fragen kommen, verweise ich vorsorglich auf das Ini-Tutorial ;).

Mothergrayham 10. Sep 2009 19:50

Re: Quiz
 
so ich hab jetzt eine ini datei gemacht. hab sie frage.ini genannt.

wie und wo kann ich jetzt machen das delphi jetzt auf die ini datei zugreift?

im Delphi programm hab ich jetzt ein editfeld gemacht wo die frage erscheinen soll wenn man auf den startbutton drückt. und dann sollen die antworten auf den 4 vorbereiteten panels erscheid.

haentschman 10. Sep 2009 19:58

Re: Quiz
 
arbeite bitte das INI Tutorial durch.
Da klären sich deine Startprobleme von selbst. 8)

Mothergrayham 10. Sep 2009 20:58

Re: Quiz
 
kann ja sein das ich zu doof für delphi bin. hab mir das ini tutorial min. 5 mal durchgelesen und verstehe nur bahnhof und kofferklau.

ich find oder besser verstehe nicht wo ich jetzt die ini datei mit delphi zusammen bringe.

Rakshasa 10. Sep 2009 21:04

Re: Quiz
 
Irgendwie kann ich kaum glauben, dass Dein Lehrer einfach nur "ein Projekt" als Hausaufgabe gibt, ohne irgendwelche Hilfestellung dazuzugeben? Warum fragst Du nicht noch Deinen Lehrer, ob er Dir Unterlagen o.Ä. geben kann?

Etwas Eigeninitiative wird hier im Allgemeinen recht gern gesehen ;)

Mothergrayham 10. Sep 2009 21:10

Re: Quiz
 
unser lehrer ist manchmal etwas verwirrt das ist ja das problem *lol*

in erster linie geht es mir ja um die ini datei. finde die antworten ja auch alle super.

dann hab ich mal ne frage zu dieser aussage die hier schon gefallen ist:

Am Anfang liest du per

Delphi-Quellcode:
Ini.ReadInteger('ALLGEMEIN','AnzahlFragen',0)
aus, wie viele Fragen in der Ini-Datei stehen und merkst dir diesen Wert.



Was ist mit anfang gemeint?

patti 11. Sep 2009 10:18

Re: Quiz
 
Obwohl die DP kein "Hausaufgabenforum" ist, in dem deine Aufgaben erledigt werden, geb ich dir hier mal etwas "Starthilfe":

Binde unter uses (ganz oben in der Unit) die Unit IniFiles ein. Dann deklarierst du dir eine Methode von deinem Hauptformular, etwa im public-Abschnitt:

Delphi-Quellcode:
procedure LoadQuestions;
Die Procedure könnte z.B. so ausschauen:

Delphi-Quellcode:
procedure TFrom1.LoadQuestions;
var ini   : TIniFile;
var anzahl : integer;
var i     : integer;
var Frage : string;
var Antw1  : string;
var Antw2  : string;
var Antw3  : string;
var Antw4  : string;
var Richtig : integer;
begin
     //--
     ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'questions.ini');
     // ExtractFilePath(..) liefert Pfad der EXE-Datei
     //
     try
       anzahl := Ini.ReadInteger('ALLGEMEIN','AnzahlFragen',0);
       //
       if anzahl > 0 then
       begin
           for i := 1 to anzahl do
           begin
                Frage := Ini.ReadString('FRAGE'+IntToStr(i),'Frage','');
                Antw1 := Ini.ReadString('FRAGE'+IntToStr(i),'Antwort1','');
                Antw2 := Ini.ReadString('FRAGE'+IntToStr(i),'Antwort2','');
                Antw3 := Ini.ReadString('FRAGE'+IntToStr(i),'Antwort3','');
                Antw4 := Ini.ReadString('FRAGE'+IntToStr(i),'Antwort4','');
                Richtig := Ini.ReadInteger('FRAGE'+IntToStr(i),'Antwort4',0);
                // an diser Stelle musst du dir ueberlegen, was du mit den geladenen Daten anfaengst
           end;
       end;
     finally
       Ini.Free;
     end;
end;
(Den Quelltext hab ich nur schnell im Textditor geschrieben und nicht getestet, könnten also noch Tippfehler oder andere Fehler drin sein! Du musst ihn außerdem evtl. noch an den Aufbau deiner Ini-Datei anpassen.)

Die Procedure macht nichts anderes als das Lesen der Fragen und Antworten, die Fragen werden jedoch nirgends "weiterverwendet". Weiter oben habe ich bereits ein "Array of Record" genannt, in dem man alle Fragen speichern könnte. Da das hier aber eben kein Hausaufgabenforum ist, musst du dich um diesen Teil erstmel selber kümmern oder bei konkreten Fragen diese hier stellen.

Noch ein Hinweis: Du hast zwar jetzt einen Code, der das Laden der Fragen übernimmmt, aber ich gehe davon aus, dass du ihn nicht auf Anhieb verstehts. Daher mein Tipp: Kopiere ihn nicht einfach in dein Projekt, sondern gehe den Code komplett durch und versuche ihn wirklich zu verstehen, dabei solltest du einiges lernen, was du vielleicht später noch einmal gebrauchen kannst.

TeronG 14. Sep 2009 10:48

Re: Quiz
 
Evtl. kannste mit dem Tutorial mehr anfangen!?


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