AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie varriert man die Ausgabe von Texten? - Vorsicht Newbie
Thema durchsuchen
Ansicht
Themen-Optionen

Wie varriert man die Ausgabe von Texten? - Vorsicht Newbie

Ein Thema von TDO · begonnen am 12. Apr 2003 · letzter Beitrag vom 13. Apr 2003
Antwort Antwort
TDO

Registriert seit: 12. Apr 2003
2 Beiträge
 
#1

Wie varriert man die Ausgabe von Texten? - Vorsicht Newbie

  Alt 12. Apr 2003, 22:52
Ich hätte da eine absolute Anfänger-Frage:

Wie kann ich Ausgaben zufällig variieren?

Ich arbeite zur Zeit an einem kleinen Quiz und möchte nicht jedesmal die gleiche Antwort ausgeben, wenn etwas falsch ist. Stattdessen sollte zufällig entweder "Das war falsch" oder "Schlechte Antwort" oder "Da lagst du nicht richtig" angezeigt werden.

Ich möchte also, dass entweder der Befehl

Label1.caption:='Das war falsch';
{oder} Label1.caption:='Schlechte Antwort';
{oder} Label1.caption:='Da lagst du nicht richtig';

ausgeführt wird.

Wie drücke ich so etwas in Delphi aus?
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 12. Apr 2003, 22:56
Hallo und herzlich Willkommen im Forum!

Das musst Du mit if..then abfragen.
Kommt halt drauf an worauf Du Dich beziehst, wird da die Eingabe in einem Edit überprüft, oder CheckBoxen, oder RadioButtons usw. usw., aber wenn Du hier die Suche benutzt, dann wirst Du fündig, denn nach sowas auch wegen einem Quiz hat schonmal jemand gefragt.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 12. Apr 2003, 22:58
Ich glaube, das er zufällig eines der 3 Antworten ausgeben will. Deshalb würde ich es so machen:

Delphi-Quellcode:
var i:integer

randomize;
i:=random(2)+1;

if i=1 then label1.caption := 'Erster Text';
if i=2 then label1.caption := 'Zweiter Text';
if i=3 then label1.caption := 'Dritter Text';
Aber Achtung: Der Code muß nicht funktionieren, hatte Delphi schon seit MOnaten nichtmehr an und ist also aus dem Kopf!
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#4
  Alt 12. Apr 2003, 23:12
Zitat von theomega:
Der Code muß nicht funktionieren...
Funktioniert aber:
Delphi-Quellcode:
var
   i: integer;

procedure Tmainfrm.checkanswer(Sender: TObject);
begin
  Randomize;
  i:=random(2)+1;
if
  i=1
then
  Label1.Caption:= 'Leider falsch!'
else
if
  i=2
then
  Label1.Caption:= 'Das war nicht richtig!'
else
if
  i=3
then
  Label1.Caption:= 'Du hast leider einen Fehler gemacht!';
end;
MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Haegar

Registriert seit: 10. Dez 2002
Ort: Peitz
319 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 12. Apr 2003, 23:40
hi,

allerdings solltest du den Befehl "randomize" lieber in das Ereigniss "OnFormCreate" schreiben, denn er brauch nur einmal ausgeführt werden.

gruss haegar
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6
  Alt 12. Apr 2003, 23:41
Vom Prinzip her für Newbies OK, aber macht doch bitte ein...Random(3)... in den Code. Random(3) -> 3 Möglichkeiten [0,1,2]
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Alfons_G

Registriert seit: 7. Jun 2002
Ort: München
296 Beiträge
 
Delphi 2007 Architect
 
#7
  Alt 12. Apr 2003, 23:53
Elegantere Lösung:
Delphi-Quellcode:
const
  MaxAntwort = 3;

var
  arrFehler: array [1..MaxAntwort] of string;

// Initialisierung
  arrFehler[1] := 'Leider falsch!';
  arrFehler[2] := 'Das war nicht richtig!';
  arrFehler[3] := 'Du hast leider einen Fehler gemacht!';

...

function WaehleAntwort: string;

var
  i: integer;

begin
  Randomize;
  i := random(MaxAntwort + 1);
  result := arrFehler[i];
end;

...

// Aufruf
if falsch then
  begin
  Label1.Caption := WaehleAntwort;
  ...
end;
Dabei hast Du den Vorteil, dass Du die Funktion von beliebigen Stellen aus aufrufen kannst und dabei ist es möglich, jederzeit weitere Antworten hinzufügen. Du musst lediglich die Konstante MaxAntwort anpassen.

Erweiterungsmöglichkeiten:
Falls Du auch Antworten für richtige Ergebnisse brauchst, machst Du das Array zweidimensional und übergibst der Funktion einen Parameter, durch den festgelegt wird, ob eine Richtig- oder Falsch-Antwort gebraucht wird.
Du könntest die Antworten dann auch aus einer Datei auslesen oder ...

Alfons Grünewald



Alfons Grünewald
  Mit Zitat antworten Zitat
TDO

Registriert seit: 12. Apr 2003
2 Beiträge
 
#8
  Alt 13. Apr 2003, 10:40
OK, ich werd´s versuchen. Vielen Dank für die schnellen Antworten.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#9
  Alt 13. Apr 2003, 12:44
MaxAntwort kann man sich sparen, da (MaxAntwort = (Length(arrFehler) + 1)) bzw. (MaxAntwort = High(arrFehler))

Des Weiteren:
- Randomize NUR UND WIRKLICH NUR ins OnCreate (oder ähnliches)
- Aufrufen besser einfach mit: Label1.Caption := arrFehler[random(high(arrFehler))];
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:11 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