ole: Zufallszahlen...funzt nicht so wie soll *grummel*

hi

ich hab mir vorgenommen für ein rollenspiel (pen & paper) einen charaktergenerator zu schreiben...in ASP. ich hab mir nämlich gedacht "so lernst dus spielerisch"...aber pustekuchen...ich bin eigentlich nur am frusten...naja, fast ;)

ich versuche nun eine kleine abfrage mir einem zufallszahlengenerator zu verbinden mit folgendem script:

<html>
<head>
 <title></title>
</head>

<body>

<form method="post">
<input type="text" name="rasse">
<input type="submit" value="Rasse wählen">
</form>

<%
rasse = Request.Form("rasse")

if (rasse ="") then
 if (rasse = "mensch") then
  von = 3
  bis = 18
  %>
  <p>Hier ist der Wert :</p>
  <%
  for x = 1 to 1
  Response.Write Wuerfel(von,bis) & " "
  next
  else
  %>
  Geben sie "mensch" ein
  <%
  end if
end if

function Wuerfel(von,bis)
 randomize
 Wuerfel = Fix(rnd*(bis-von+1)+von)
end function
%>
</body>
</html>

mein problem ist nun, das ich es nicht hinbekomme eine ausgabe nach der eingabe zu kriegen. entweder bekomme ich die ausgabe bevor ich was eingebe oder garnicht :(.

gedacht ist es so:

  1. ins eigabe feld soll eine "mensch" eigegeben werden...das hab ich auch ganz schick hinbekommen ;)
  2. wenn rasse = mensch soll ein zufallszahl zwischen 3 und 18 ausgegeben werden
  3. wenn was anderes oder nichts drinsteht soll der tolle satz "geben sie 'mensch' ein" ausgegeben werden

wo liegt mein denk-/schreibfehler?

alles liebe
ole
(8-)>

  1. Hallo,

    ich habe zwar keinen blassen Schimmer von ASP, versuche aber einfach mal mein
    Glück. :-)

    Dein Fehler liegt vemutlich hier:

    if (rasse ="") then
    if (rasse = "mensch") then

    Du fragst erst ab, ob rasse leer ist (rasse = "") und danach fragst du ab,
    ob rasse gleich "mensch" ist (rasse = "mensch"). Das wird wohl nie passieren.
    Dein erstes if sollte vermutlich eher abfragen, ob rasse NICHT leer ist,
    und dann erst die zweite if-Anweisung ausführen, die abprüft, ob rasse
    gleich mensch ist. Dann dürfte es wie gewünscht funktionieren, denke ich.

    Gruß
    Slyh

    PS: Kleiner Tip: Du solltest deinen Code besser formatieren, also Code inner-
    halb eines Blockes immer Einrücken und dergleichen.

    1. if (rasse ="") then
      if (rasse = "mensch") then

      Ich kenn mich zwar mit asp nicht aus, abe in vielen Programmiersprachen ist " = " ein ZUWEISUNGSoperator
      während " == " ein VERGLEICHSoperator ist

      if (rasse ="") ist somit immer true, da der Variablen rasse erfolgreich der wert  "" zugewiesen wurde.

      Wie gesagt, ich weiß nicht, ob das auch für ASP gilt.

      1. Hallo Carsten!

        Ich kenn mich zwar mit asp nicht aus,...

        Hey, dann sind wir jetzt schon drei!

        if (rasse ="") ist somit immer true, da der Variablen rasse erfolgreich der wert  "" zugewiesen wurde.

        Nicht ganz: Es wird der zugewiesene Wert auf true/false geprüft. Was dabei rauskommt ist je nach Sprache verschieden:
        In C z.b. ist "" ein Zeiger auf einen Leerstring, und der ist nicht null, also wahr (dort ist es also so, wie du sagtest).

        In PHP dagegen wird "" in einen boolean konvertiert und ein Leerstring gilt dabei als false, dergleichen in Javascript.

        Gruss,
         Carsten

        1. Hallo Carsten ;-)

          Stimmt, du hast recht, hab ich übersehen.

          @ole: Wie dem auch sei, wenn ASP einen Unterschied zwischen = und == macht, dann bewirken die "if"-Abfragen sicher nicht das was du willst.

          mit "if (rasse == "mensch") müsste es klappen.

          1. hi

            ASP mag kein == :(

            trotzdem danke für die hilfe

            alles liebe
            ole
            (8-)>

    2. hi

      danke, das mit dem NOT hat mir gefehlt *blindbin*

      allerdings hab ich noch keinen plan davon wie ich es hinbekomme, das erst nach dem button eine wertausgabe erfolg *kopfkratz*

      alles liebe
      ole
      (8-)>

      1. hallo ole,

        vielleicht solltest du die Abfrage deiner Bedingungen nicht ineinander verschachteln. Also:

        if (rasse !="mensch") then
        ...
        endif
        %>
        <p>Hier ist der Wert</p>
        <%
        <if (rasse ="mensch") then
        ...
        endif
        %>
        <p>Geben Sie "mensch" ein</p>

        Außerdem fehlte das <p>-Tag vor dem tollen Satz zur Eingabeaufforderung.

        Christoph S.