Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vereinfachung durch Var. (https://www.delphipraxis.net/24857-vereinfachung-durch-var.html)

Frankie 27. Jun 2004 17:09


Vereinfachung durch Var.
 
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?

Sharky 27. Jun 2004 17:20

Re: Vereinfachung durch Var.
 
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!

GLaforge 27. Jun 2004 17:22

Re: Vereinfachung durch Var.
 
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 :o

Nicodius 27. Jun 2004 17:34

Re: Vereinfachung durch Var.
 
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;

Delphi-Quellcode:
  setlength(mydynar, Length(mydynar)+1);
und auch wieder mit high(letzer wert im array) arbeiten!

Frankie 27. Jun 2004 18:02

Re: Vereinfachung durch Var.
 
Zitat:

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. :cry:

Matze 27. Jun 2004 18:07

Re: Vereinfachung durch Var.
 
Der Code an sich geht schon, nur dass er alle Fragen hintereinander stellt. :mrgreen:

Nikolas 27. Jun 2004 18:08

Re: Vereinfachung durch Var.
 
aha. Eine Fehlermeldung.

Frankie 27. Jun 2004 18:12

Re: Vereinfachung durch Var.
 
Ah jetzt funktionierts. Hatte wohl was falsch gemacht?!
Auf jeden Fall danke schön! :mrgreen: 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?!

Sharky 27. Jun 2004 18:17

Re: Vereinfachung durch Var.
 
Zitat:

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.

Nikolas 27. Jun 2004 18:19

Re: Vereinfachung durch Var.
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz