AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vereinfachung durch Var.

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

Registriert seit: 27. Jun 2004
25 Beiträge
 
#1

Vereinfachung durch Var.

  Alt 27. Jun 2004, 17:09
Hallo,
wie einige schon wissen programmiere ich gerade mein erstes Projekt: Ein Quiz.
Allerdings hab ich nun nicht immer lust alle fenster neu zu schreiben, in denen die Fragen kommen.

Beispiel:
Delphi-Quellcode:
eingabe:= InputBox('Super-Quiz',frage1, 'Antwort eingeben') ;
if (eingabe = ant1) THEN
Showmessage('Richtig')
else
Showmessage('Falsch');
Das ist ja das Fenster in dem die Fragen kommen und wo man seine Antwort eingeben muss. frage1 ist in diesem Fall natürlich eine Variable. Nun hab ich aber nicht immer Lust, dass ganze zu schreiben und immer nur mit 'frage2', 'frage3' etc. zu korrigieren. Ich hatte schon versucht eine Variable zu schreiben und diese dann einfach nur immer plus die Variable 'frage' zu addieren, aber das hat nicht geklappt. Weiß einer 'ne Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 17:20
Hai Frankie,

mache das ganze doch mit einem Array of String.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fragen : Array [1..4] of String;
  antworten : Array [1..4] of String;
  eingabe : String;
  ndx : Integer;
begin
  // Meine Demo-Fragen
  fragen[1] := 'blubb';
  antworten[1] := 'keine Ahnung';
  fragen[2] := 'Sardiene';
  antworten[2] := 'mir egal';
  fragen[3] := 'Karpfen';
  antworten[3] := 'wer will das wissen';
  fragen[4] := 'Hering';
  antworten[4] := 'das ist geheim';
  // Jetzt geht es los
  for ndx := 1 to High (fragen) do
  begin
    eingabe:= InputBox('Super-Quiz',fragen[ndx], 'Antwort eingeben') ;
    if (eingabe = antworten[ndx]) then
    begin
      Showmessage('Richtig')
    end
    else
    begin
      Showmessage('Falsch');
    end;
  end;
end;
Das ist so natürlich nur ein Beispiel. Besser wäre natürlich ein Dynamisches-Array oder gleich eine kleine Datenbank dahinter!
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von GLaforge
GLaforge

Registriert seit: 16. Nov 2003
Ort: Halle
106 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 17:22
Hi,
ich sehe eine Möglichkeit event. mit array zu arbeiten. Andere Möglichkeit wäre vielleicht eine Schleife mit einen Faktor der sich pro Schleifendurchlauf um eins erhöht

Bsp.:
Code:
for i:=1 to Durchlaufanzahl do
....
veränderliche_Variable:=veränderliche_Variable + 1;
....
cu



Edit:
Sharky war schneller
Cogito ergo sum - Ich denke also bin Ich
  Mit Zitat antworten Zitat
Nicodius

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

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 17:34
und wenn du mit der funktion "neue frage hinzufügen" arbeiten willst

dann amchst du das mit einem dynamischen array

var mydynar : array of string;

  setlength(mydynar, Length(mydynar)+1); und auch wieder mit high(letzer wert im array) arbeiten!
Nico Müller
  Mit Zitat antworten Zitat
Frankie

Registriert seit: 27. Jun 2004
25 Beiträge
 
#5

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:02
Zitat von Sharky:
Hai Frankie,

mache das ganze doch mit einem Array of String.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fragen : Array [1..4] of String;
  antworten : Array [1..4] of String;
  eingabe : String;
  ndx : Integer;
begin
  // Meine Demo-Fragen
  fragen[1] := 'blubb';
  antworten[1] := 'keine Ahnung';
  fragen[2] := 'Sardiene';
  antworten[2] := 'mir egal';
  fragen[3] := 'Karpfen';
  antworten[3] := 'wer will das wissen';
  fragen[4] := 'Hering';
  antworten[4] := 'das ist geheim';
  // Jetzt geht es los
  for ndx := 1 to High (fragen) do
  begin
    eingabe:= InputBox('Super-Quiz',fragen[ndx], 'Antwort eingeben') ;
    if (eingabe = antworten[ndx]) then
    begin
      Showmessage('Richtig')
    end
    else
    begin
      Showmessage('Falsch');
    end;
  end;
end;
Das ist so natürlich nur ein Beispiel. Besser wäre natürlich ein Dynamisches-Array oder gleich eine kleine Datenbank dahinter!
Kommt bei mir leider eine Fehlermeldung.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:07
Der Code an sich geht schon, nur dass er alle Fragen hintereinander stellt.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:08
aha. Eine Fehlermeldung.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Frankie

Registriert seit: 27. Jun 2004
25 Beiträge
 
#8

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:12
Ah jetzt funktionierts. Hatte wohl was falsch gemacht?!
Auf jeden Fall danke schön! Muss da jetzt nur noch durchsteigen.

Edit:
Also dieses Array of String bestimmt ja die Anordnung. Kann ich diese also nur durch [1],[2] etc. bestimmen?
Was ich noch nicht ganz verstanden habe, ist wofür der ndx ist?!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:17
Zitat von Frankie:
...Was ich noch nicht ganz verstanden habe, ist wofür der ndx ist?!
ndx ist meine "Zählervariable" für die FOR-DO Schleife.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Vereinfachung durch Var.

  Alt 27. Jun 2004, 18:19
Wenn du ein array hast, hast du ja alle Fragen hintereinander. Mit dem Index (hier 'ndx') kannst du dann bestimmen welche Frage du ausgeben willst. Wenn du dann sowas schreibst
Delphi-Quellcode:
ndx:=1;
label1.caption:=fragen[ndx];
, hast du 'Hering' im Label stehen. Wie du das füllen kannst, steht ja schon im Text.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  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 09:33 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