Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.01.2009, 16:16

[solved] probleme beim passwort generator

Ich möchte einen Passwort generator schreiben der passwörter generiert :P logisch oder?^^
Nun soll meine noch die option [ ] easy to remember beinhalten, d.h. nach jedem konsonant soll ein vokal kommen und nach jedem vokal ein konsonant usw. Man kann also die Passwörter aussprechen ohne sich die zunge zu verknoten und dadurch kann man sich die passwörter relativ leicht merken.

Wenn ich jetzt die easy to remember funktion aktiviere kommt bei mir ab un zu ein Z an der stelle wo ein vokal sein sollte. komischer weise erscheint dieser fehler nur alle 5mal und es ist jedesmal ein Z.

Hier der Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
if checkbox1.checked then    //schauen ob easy to remember aktiviert ist
    begin

        for I := 1 to strtoint(edit2.Text) do
        begin
        if odd(I) = false then begin   //wenn I ungerade ist soll ein vokal komen
          if random(10) >= 5  then begin  // grossgeschriebener vokal
            pw := pw + vokalegross[random(4+1)];  //array enthält :  a e i o u
          end
          else  // kleingeschriebenen vokal
          begin
            pw := pw + vokaleklein[random(4+1)]; //array enthält :  A E I O U
          end;
        end
        else //falls I gerade sein sollte kommt ein konsonant
        begin 
        if random(10) > 5 then begin //grosser konsonant
            pw := pw + konsonantegross[random(20+1)]; //array enthält nur konsonante
          end
          else //kleinerkonsonant
          begin
            pw := pw +konsonanteklein[random(20+1)]; //array enthält nur konsonante
          end;

        end;
        end;
    end
    else  //falls easy to remember nicht aktiviert ist
    begin
      for I := 1 to strtoint(edit2.Text) do
        begin
        pw := pw + easyaabc[random(61+1)]; //array enthält 26 mal kleines abc 26mal grosses abc und 10 zahlen
        end;
    end;
  end;

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

2

29.01.2009, 16:36

Ich weiß nicht welche Sprache das ist, aber deine IDE wird doch sicherlich einen Debugger integriert haben, nicht? Damit solltest du den Verlauf der zu dem Fehler führt nachvollziehen können.

Bösewicht

unregistriert

3

29.01.2009, 16:42

Könnte das Delphi sein?
Sorry wenn ich voll daneben liege, ich meine aber diese Syntax schonmal gesehen zu haben^^

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

4

29.01.2009, 16:44

Hallo N_E_O !

Zitat von »"N_E_O"«


Ich möchte einen Passwort generator schreiben der passwörter generiert :P logisch oder?^^


Joar das ist einleuchtend :D

Das sieht mir nach basic oder pascal (ich weiß es nicht genau) aus.
Allerdings scheint der fehler im algorithmus zu liegen.

Zitat von »"N_E_O"«


nach jedem konsonant soll ein vokal kommen und nach jedem vokal ein konsonant


hm also konsonant und vokal wechseln sich ab ? so wie
"bifusiganota" ? ok ein bisschen kann man sich das merken.

der code ist aber an sich richtig, hab mal so 10000 testläufe gemacht,
kein fehler. der muss wo anders liegen, vmtl ein buffer overrun oder
ein buchstabensalat im array :D

btw die kleinen konsonanten werden bevorzugt. da würde ich auch ein '>=' statt '>' einsetzen.

ps:

merk dir mal
LEhoHiLUfeHIFEv

pps:

der geilste:
DoFoxeyUNehOkoD

EDIT:

ist das richtig?

Quellcode

1
random(4+1)


muss das nicht

Quellcode

1
random(4) + 1


heißen ??

das würde alles erklären

<vermutung>

da in dieser sprache das erste element 1 ist, kann es sein dass
random 0 zurückgibt. das wäre aber -1, was dem element vor dem
ersten entspricht. wenn du aber das konsonantenfeld vor dem vokalfeld
anlegst, liegen beide hintereinander aufm stack. => letzter buchstabe
vom konsonanten-array => Z

das tritt nur alle 5mal auf, da rand pseudozufällige werte gibt, die sich
in jedem programmlauf wiederholen :::bugfound:::

</vermutung>
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

5

29.01.2009, 18:39

tschuldige, da ich mich beeilen musste und unbedingt bevor ich gehen musste den thread abschicken wollte, habe ich meiner eile total vergessen zu schreiben um welche sprache es sich handelt^^
Aber wie die meisten richtig geraten haben es ist: Delphi/Pascal ;)

@Gotbread: größten dank dir!!!
war mal wieder ein leichtsinnsfehler von mir -.-
Es muss

Quellcode

1
random(4) + 1 


heissen und nicht

Quellcode

1
random(4+1) 


der bug ist nur circa alle 5mal aufgetreten. Ist auch schonmal passiert das es 2mal hintereinander war. oder erst nach dem 10ten mal. aber im schitt waren es etwa 5mal ;)

gut so richtig lange wörter kann man sich vielleicht nicht merken^^ aber bei kürzeren sachen und bei nur kleinen buchstaben ist es schon einfacher als zb. krahzciw

PS: :P nochmals größten dank^^ nachdem ich diesen fehler verbessert habe, ist ein anderer fehler (Irgendso ein Adress-Fehler, weil es versucht wurde einen array aufzurufen der nicht mehr im gültigen bereich lag) auch verschwunden xD hatte dieses +1 in jeder random-klammer gehabt :P

Anonymous

unregistriert

6

29.01.2009, 18:45

fiese pascal syntax, ultra fiese...

7

29.01.2009, 21:38

Zitat von »"N_E_O"«

Aber wie die meisten richtig geraten haben es ist: Delphi/Pascal ;)
Was jetzt? :p

8

30.01.2009, 18:20

Ganz genau ist es Delphi. Aber Delphi ist doch ein dialekt von Pascal?? Oder hat mir mal so ein Buch haushohe Lüge aufgetischt o.O

Werbeanzeige