Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hilfe beim Fragespiel (https://www.delphipraxis.net/159114-hilfe-beim-fragespiel.html)

Samel 15. Mär 2011 07:39

Hilfe beim Fragespiel
 
Hallo meine freundin und ich müssen für die schule ein kleines fragespiel programmieren...leider haben wir ein kleines problem...wir wollen die fragen nicht direkt ins programm schreiben sondern in eine .txt datei und diese dann in delphi abrufen...kann uns einer sagen wie man das macht? lg

DeddyH 15. Mär 2011 07:49

AW: Hilfe beim Fragespiel
 
Eine einfache Möglichkeit dürfte TIniFile sein. Diese Datei könnte so z.B. aussehen:
Code:
[1]
Frage=Was ist die Antwort auf die Frage nach dem Leben, dem Universum und einfach allem?
Antwort=42

[2]
Frage=Wo wurde der Friedensvertrag von 1918 unterzeichnet?
Antwort=Unten rechts

usw. usf.

-187- 15. Mär 2011 08:06

AW: Hilfe beim Fragespiel
 
Eine weitere einfache Möglichkeit wäre die Fragen+Antworten in Einer .txt File zu speichern und via TStringList zu behandeln.

Die Textdatei könnte wie folgt aussehen:

Code:
Q: Hier steht deine Frage
A: Hier steht deine Antwort
Q: Hier steht die nächste Frage
A: Und hier die Antwort
Oder aber so:

Code:
Hier steht deine Frage|Hier steht deine Antwort
Hier steht die nächste Frage|Und hier die Antwort
Viel Erfolg

Samel 15. Mär 2011 08:09

AW: Hilfe beim Fragespiel
 
danke aber wie genau muss ich das jetzt anstellen? weil schreib ich es dann nicht doch in mein programm direkt mit rein wenn ich es so mache?

-187- 15. Mär 2011 08:12

AW: Hilfe beim Fragespiel
 
Variante 1:
Eine Ini Datei sollte nicht manuell angelegt werden wenn man sich da nicht auskennt :)
Hierzu könnte man sich ein "Fragen Erstell Hilfsprogramm" schreiben.

Über Delphi werden die Fragen dann zur Laufzeit via IniFiles einlesen.

Variante 2:
Die Textdatei kannst du Manuell anlegen. Du musst dir aber hier auch sicher sein was du machst :)

Die Textdatei lädst du dann zur Laufzeit in einer Stringliste. Mit einer Schleife durchläufst du diese und ließt die Fragen + Antworten aus.

WM_CLOSE 15. Mär 2011 08:13

AW: Hilfe beim Fragespiel
 
sieh dir mal TIniFile an, das ist gaaanz einfach:

Delphi-Quellcode:
ini:=TIniFile.create('C:\Qa.ini');
ini.ReadString(IntTostr(1), 'Frage', '');
ini.ReadString(IntTostr(1), 'Antwort', '');

DeddyH 15. Mär 2011 08:26

AW: Hilfe beim Fragespiel
 
Und die Abschnitte, die die Fragen enthalten, bekommt man mit TIniFile.ReadSections. In meinem Beispiel von oben würde die übergebene Stringliste dann 1 und 2 enthalten.

Jumpy 15. Mär 2011 08:58

AW: Hilfe beim Fragespiel
 
Hier vllt. mal der Link auf ein Tutorial zum Thema Ini, bevor du ganz verwirrt bist :-D

MaBuSE 15. Mär 2011 10:33

AW: Hilfe beim Fragespiel
 
Zitat:

Zitat von Samel (Beitrag 1088531)
...kann uns einer sagen wie man das macht? lg

In Delphi eine neue Anwendung erzeugen.
2 x Label Komponente auf das Form1 legen (Caption auf Frage: und Antwort: setzen)
2 x TEdit Komponente auf das Form1 legen
1 x Button auf das Form 1 legen.
-> Button doppelklicken -> Editor geht auf.

Quelltext wie folgt vervollständigen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  IniFiles;

{$R *.dfm}

const
  cNoQuestion = 'keine Frage angegeben';
  cNoAnswer = 'keine Antwort angegeben';

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  s: string;
begin
  sl := TStringList.Create;
  try
    // IniDatei hat Dateinamen der Exe nur mit '.ini' statt '.exe'
    with TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')) do
    try
      ReadSections(sl); // Sektionen auslesen -> [Sektionname]
      s := sl[random(sl.Count)]; // per "Zufall" eine Sektion auswählen
      Edit1.Text := ReadString(s, 'Frage', cNoQuestion); // Frage der Sektion in Edit Feld schreiben
      Edit2.Text := ReadString(s, 'Antwort', cNoAnswer); // Antwort - dito
    finally
      Free; // IniDatei wieder freigeben
    end;
  finally
    sl.Free; // StringListe wieder freigeben
  end;
end;

initialization
  Randomize; // Zufall initialisieren ;-)
end.
IniDatei anlegen.
Ini Datei ist eine Text-Datei mit dem Namen der Exe-Datei aber mit der Dateiendung ini statt exe

z.B. Project1.ini

Folgender Inhalt sollte funktionieren:
Code:
[1]
Frage=Warum?
Antwort=Darum!
[2]
Frage=Weshalb?
Antwort=Deshalb!

[Allgemeinwissen 1]
Frage=Was ist die Antwort auf die Frage nach dem Leben, dem Universum und einfach allem?
Antwort=42

[Fangfrage 1]
Frage=Wo wurde der Friedensvertrag von 1918 unterzeichnet?
Antwort=Unten rechts
Ich hoffe das hilft Dir.
Viel Spaß
MaBuSE


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