Programmieren - alles kontrollieren 4.936 Themen, 20.625 Beiträge

Hilfe bei Programmieren mit Delphi 6

geoli / 8 Antworten / Flachansicht Nickles

Hallo,
ich hab vor kurzem mit delphi6 angefangen und wollte nun mal ein kleines Quiz programmiern.
Dabei stieß ich schnell auf das Problem wie dies anzufangen sei. Konkret, soll man in ein Feld die Antwort auf eine Frage eingeben können (ein Wort reicht) und der Computer soll nun überprüfen, ob dies das richtige Wort war.
Vielen Dank im Voraus für Deine Hilfe!!! geoli

bei Antwort benachrichtigen
Borlander geoli „Hilfe !!! Langsam verliere ich die Übersicht. Habs mit der Delphi-Hilfe...“
Optionen
Habs mit der Delphi-Hilfe versucht, diese ist jedoch in englisch und ziemlich allgemein.
Ich vermute Du benutzt die Personal Version, bei mir ist die Hilfe in Deutsch. Das die Hilfe zu allgemein ist kann ich ebenfalls nicht bestätigen, wenn Du Informationen über eine Komponenten / ein Object brauchts kannst Du normalerweise am obenren Rand der Hilfe auf Eigenschaften (Properties), Methoden (Methods) und Ereignisse (Events) klicken - dann bekommst Du eine umfangreiche Liste.

dazu eine INI-Datei wo ich mein Beispiel eingetragen habe.
Hast Du die Datei im Programmverzeichnis liegen?

Unklar ist mir nun wie ich es anstelle dass das programm auf die INI-Datei zugreift
Dazu musst Du zuerst die Unit inifiles in der Uses-Klausel am Anfang der Unit einfügen.

Um Dann die auf die INI-Datei zuzugreifen musst Du ein Object vom Typ TIniFile erstellen (erst mit var deklarien wie eine String- oder Integer-Variabel). Diese solltest Du global (wenn Du das Object nur lokal erstellen würdest, kannst Du nur in der jeweiligen Function/Procedur verwenden und die darin gespeichrten Daten sind beim nächsten Aufruf nicht mehr verfügbar) deklarien (hinter "var
Form1: TForm1;"). Damit Du das Object verwenden kannst musst Du es beim Programmstart (OnCreate Form1) erstellen:
QuizData := TIniFile.Create('quiz.dat'); { bor: Ich hab das Object einfach mal "QuizData" genannt und als Dateinamen "quiz.dat" verwendet - der Pfad muss nicht mit angegeben werden wenn sich die Datei im selben Verzeichnis wie das Programm oder im Windowsverzeichnis befindet - die Endung muss auch nicht umbedingt INI sein, ich habe ganz neutral .dat gewählt }
Beim Beenden des Programms (OnClose) solltest Du den Speicher des Objects wieder mit QuizData.Free; freigeben.


Unklar ist mir nun wie ich es anstelle dass das programm auf die INI-Datei zugreift und wie es wissen soll dass vor dem (=) die Frage steht die ins Label soll und dahinter die Antwort. In der delphi-hilfe stand was von WriteString und ReadString aber wie dies genau anzuwenden sei bleibt mir noch Dunkel.
Mit Antwort := QuizData.ReadString('[quiz]', Frage, '#Fehler die Frage existiert nicht!'); kannst Du die Antwort aus der Datei lesen - dafür muss Du allerdings erst mal die Frage kennen. Die Fragen lädst Du am besten beim Programmstart in eine StringList, so kannst Du die Fragen zufällig auswählen, damit das ganze nicht zu Langweilig wird.

Erst mal musst Du die wieder eine TStingList global deklarieren.
Diese wird ebenfalls beim Programmstart erzeugt:
QuestionList := TStringList.Create;
und am Ende des Programms mit der Methode Free wieder freigegeben.

Um die Fragen in die StingList zu lagen verwendest Du die Methode ReadSection, als Section gibtst Du in Deinem Fall 'quiz' an und als Strings die StringList.

Die Fragen kannst Du anschließend mittels QuestionList[Nummer] abrufen - gezählt wird ab 0. Um den Text im Label anzeigen Zu lassen musst Du den Rückgabewert einfach der Eigenschaft Caption des Labels zuweisen.

Die Antworten kannst Du anschließend mittels QuizData.Read('quiz', Frage_Label.Caption, '#Fehlermeldung wenn die Frage nicht gefunden wurde!'); abrufen

So damit müsstest Du schon ein bisschen weiter kommen, wenn nicht kannst Du immer noch weiterfragen ;-)


CU Borlander
bei Antwort benachrichtigen