Cham-lion: zahlenzuweisungen in latin1 buchstaben umwandeln ...

salut an alle,

mein problem ist ein wenig komplexer allerdings für java script fans ein leichtes (hoffe ich). es geht um ein programm welches ein freund geschrieben hat, dies soll mir als einstieg in java script dienen. hab zwar c kenntnisse aber bei einer zeile der unten abgedruckten progz komm ich nicht weiter. bitte helft mir mal und sagt mir was ich falsch mache.

<SCRIPT LANGUAGE='JavaScript'>
<!--
function speak() {
 var codenm = new String(codename.name.value);
 var i = 0;
 var len = codenm.length;
 var xor = 1;
 var sol = new Array(82, 113, 98, 100, 102, 78, 98, 111);
 var good = "Good to see you friend. Let's get on with this mission...";
 var bad = "I'm sorry, i dont recognise you. Goodbye.";
 var res = 1;

if (len != 8) res = 0;

for(i = 0; i < len; i++) {
  if (res) {
   if (sol[i] != (codenm.charCodeAt(i) - xor)) res = 0;

if (xor)
    xor = -1;
   else
    xor = 1;
  }
 }

if (res)
  res = good;
 else
  res = bad;

alert(res);
}
-->
</script>

das problem ist die zeile 18 [if (sol[i] != (codenm.charCodeAt(i) - xor)) ] wenn ich -xor weglasse ist das passwort RqbdfNbo.
Aber durch das -xor müsste jeder 2te Wert des Arrays einen abgezogen bekommen. nur akzeptiert der computer das ergebnis nicht. was mache ich falsch wie kann ich das prog umcoden das es mit das pw sagt ohen das ich es eingebe oder was missverstehe ich an der zeile.

  1. thx an mulder
    pw ist spaceman
    nur das mit den 3 = check ich noch net
    und warum der erste letter +1 ist

  2. Hi there!

    Leider hast Du uns nicht gesagt, was Dein Script eigentlich machen soll. Daher weiss ich nicht, was die Zeile

    var sol = new Array(82, 113, 98, 100, 102, 78, 98, 111);

    sein soll. Naheliegend waere ja die ASCII-Codes eines Passwortes, aber dann musst Du ja nicht so komisches Zeug weiter unten machen.

    var xor = 1;
    for(i = 0; i < len; i++) {
      if (res) {
       if (sol[i] != (codenm.charCodeAt(i) - xor)) res = 0;
       if (xor)
        xor = -1;
       else
        xor = 1;
      }
    }
    Aber durch das -xor müsste jeder 2te Wert des Arrays einen abgezogen bekommen.

    Noe. Vom ASCII-Wert des 1. Buchstaben wird 1 abgezogen, zu den Werten aller weiteren Buchstaben wird 1 dazugezaehlt. Dein if (xor) ... ist gleichbedeutend mit xor=-1 in allen Faellen.

    if (res)
      res = good;
    else
      res = bad;

    res = res ? good : bad;

    Was Deine zweite Nachricht angeht, die solltest Du vielleicht nochmal in deutsch schreiben.

    So long

    1. Hallo

      Was Deine zweite Nachricht angeht, die solltest Du vielleicht nochmal in deutsch schreiben.

      dann schau mal hier
      http://www.selfhtml.de/forum/zeigebeitrag.php3?fid=2&id=23839&thread=23839&start=0

      Tschüß
      Jörg