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 2 Deklarationen? (https://www.delphipraxis.net/24856-2-deklarationen.html)

Frankie 27. Jun 2004 17:08


2 Deklarationen?
 
Hallo,
ich weiß leider nicht, ob dies hier der richtige Bereich ist - sorry.
Aber nun zu meiner Frage.
Ich benuz Delphi 6 und hab grad erst angefangen.
Ich bin nun grad dabei ein Quiz zu erstellen. Oberhalb habe ich die Variable:

var

ant: String; ant steht für Antwort

Unterhalb dann die Antwort:

ant := 'Hund';

Wie ist es jetzt möglich, dass auch noch Katze gelten zu lassen? Also das Hund und Katze richtig sind. Bislang wär ja nur die richtige Antwort Hund.

alcaeus 27. Jun 2004 17:42

Re: 2 Deklarationen?
 
Wenn ich dich richtig verstehe, wäre das Beste ein dynamisches Array:
Delphi-Quellcode:
var
  ant: array of String;
  i: Integer;
begin
  SetLength(ant,2);
  ant[0] := 'Hund';
  ant[1] := 'Katze';
  for i := 1 to Length(ant)
  //Antwort mit ant[i-1] vergleichen
end;
Zu diesem Thema findest du auch hier genug Hilfe, brauchst einfach mal suchen.

Greetz
alcaeus

BKempf 27. Jun 2004 17:42

Re: 2 Deklarationen?
 
Erste Moeglichkeit: Du koenntest ein Trennzeichen einfuehren (etwa den senkrechten Strich, |, also das Pipe-Symbol) und den String entsprechend zerlegen (oder mit Pos() durchsuchen):

Delphi-Quellcode:
StringMitRichtigenAntworten:='Hund|Katze|Maus';
if Pos(GegebeneAntwort, StringMitRichtigenAntworten)>0 then
begin
  // richtige Antwort
end
 else
begin
  // falsche Antwort
end;
Zweite und vermutlich uebersichtlichere Moeglichkeit: TObjectList verwenden und die erlaubten Antworten da reinstopfen, oder alternativ ein Array verwenden.

Sharky 27. Jun 2004 17:48

Re: 2 Deklarationen?
 
Hai Frankie,


Zitat:

Zitat von Frankie
....Wie ist es jetzt möglich, dass auch noch Katze gelten zu lassen? ...

In diesem Fall würde ich die möglichen Antworten mit einem "Sonderzeichen" trennen.

Delphi-Quellcode:
var
  antwort : String;
begin
  antwott := 'hund#katze'; // Das Zeichen # wird wohl kaum in einer Antwort vorkommen.
end;
Jetzt musst Du dir nur noch eine Funktionschreiben welche die Antwort mit diesen beiden Einträgen vergleicht und, wenn einer davon richtig ist True zurückliefert.
Als Stichwörter für die Funktion: Pos und Copy.
Versuche mal wie weit Du kommst. Bei problemen -> Fragen ;-)

Frankie 27. Jun 2004 18:01

Re: 2 Deklarationen?
 
Oh ich glaub ihr habt das jetzt ein wenig falsch verstanden (oder ich :-D ).

Also ich habe 2 Var. erstellt:

frage1: String;
ant1: String;

So nun hab ich die deklariert:

frage1: 'Wie heiße ich?';
ant1: 'Sascha';

Unten fragt er das nun einfach so ab:
Delphi-Quellcode:
eingabe:=InputBOX('Quiz',frage1,'Deine Antwort..?');
If (eingabe=ant1) Then
SHOWMESSAGE('Wow!!')
else
SHOWMESSAGE('Buh!!')
end;
Demnach müsste ich ja schon oben bei der Deklaration (ant1) eine 2. Antwortmöglichkeit einbauen. Welche allerdings nicht funktioniert - also auch nicht mit diesen Sonderzeichen (ist ja klar). Wisst ihr was ich meine?

himitsu 27. Jun 2004 18:21

Re: 2 Deklarationen?
 
Also wenn du einen String mit allen Antworten nimmst, dann mach es lieber so:
Delphi-Quellcode:
StringMitRichtigenAntworten:='|Hund|Katze|Maus|';
if Pos('|' + AnsiStrLowerCase(Trim(GegebeneAntwort)) + '|', StringMitRichtigenAntworten) > 0 then ... {richtig}

{also für "|" ist wie schon erwähnt jedes andere nicht in einer Antwort vorkommende Zeichen möglich}
denn bei den anderen Vorschlägen
Delphi-Quellcode:
StringMitRichtigenAntworten:='Hund|Katze|Maus';
if Pos(GegebeneAntwort, StringMitRichtigenAntworten) > 0 then ... {richtig}
ist auch sowas wie "und" oder sogar nur "a" also Antwort richtig.


Obwohl es so bestimmt noch besser ist, denn auf die Groß und kleinschreibung kommt es doch besimmt nicht an...
Delphi-Quellcode:
StringMitRichtigenAntworten:='|Hund|Katze|Maus|';
if Pos('|' + AnsiLowerCase(Trim(GegebeneAntwort)) + '|', AnsiLowerCase(StringMitRichtigenAntworten)) > 0 then ... {richtig}

{also für "|" ist wie schon erwähnt jedes andere nicht in einer Antwort vorkommende Zeichen möglich}

Frankie 27. Jun 2004 19:26

Re: 2 Deklarationen?
 
Danke.
Aber es gibt wirklich keine andere Lösung für meinen Weg? Bei Javascript gibts doch auch 'or' und sowas - warum denn nicht bei Delphi? :-D

Sharky 27. Jun 2004 19:29

Re: 2 Deklarationen?
 
Zitat:

Zitat von Frankie
Danke.
Aber es gibt wirklich keine andere Lösung für meinen Weg? Bei Javascript gibts doch auch 'or' und sowas - warum denn nicht bei Delphi? :-D

Irgendwie verstehe ich das Problem jetzt nicht mehr ;-)

Delphi-Quellcode:
var
  ant1 : String;
  ant2 : String;
begin
  ant1 := 'blubb';
  ant2 := 'meow';
  eingabe:=InputBOX('Quiz',frage1,'Deine Antwort..?');
  If (eingabe=ant1) or (eingabe=ant2) Then
  begin
    SHOWMESSAGE('Wow!!')
  end
  else
  begin
    SHOWMESSAGE('Buh!!')
  end;
end;

Nicodius 27. Jun 2004 19:29

Re: 2 Deklarationen?
 
es gibt or ^^

Frankie 27. Jun 2004 19:39

Re: 2 Deklarationen?
 
Funktioniert aber nich bei der Deklaration


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