Probleme mit Dims + for schleifen
Übersicht

![]() |
Kernle 32DLLBetreff: Probleme mit Dims + for schleifen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi !
Ich wollte einfach mal ein kleines Passwort-Errate Programm schreiben. Die Erste Versuche liefen ganz gut: Zitat: Variable2 = 1 ;Ticker einstellen
;------------------------------- For Variable1 = 1 To Variable2 ;Haupt-For-Schleife ;------------------------------- ;------------------------------- Variable2 = Variable2 + 1 ;Zähler für Haupt-For-Schleife weiter stellen SeedRnd MilliSecs() ;Zahlen "randomieren ;------------------------------- ;------------------------------- ascii_code1 = Rand (0,244) ;Zahl erzeugen ascii_code2 = Rand (0,244) ;Zahl erzeugen ascii_code3 = Rand (0,244) ;Zahl erzeugen ascii_code4 = Rand (0,244) ;Zahl erzeugen ascii_code5 = Rand (0,244) ;Zahl erzeugen ;------------------------------- ;------------------------------- Code1 = Chr$(ascii_code1) ;umrechnen Code2 = Chr$(ascii_code2) ;umrechnen Code3 = Chr$(ascii_code3) ;umrechnen Code4 = Chr$(ascii_code4) ;umrechnen Code5 = Chr$(ascii_code5) ;umrechnen ;------------------------------- ;------------------------------- If ascii_code1 = 32 Then Code1 = "" ;also ASCII Code für Leertaste If ascii_code2 = 32 Then Code2 = "" ;also ASCII Code für Leertaste If ascii_code3 = 32 Then Code3 = "" ;also ASCII Code für Leertaste If ascii_code4 = 32 Then Code4 = "" ;also ASCII Code für Leertaste If ascii_code5 = 32 Then Code5 = "" ;also ASCII Code für Leertaste ;------------------------------- ;------------------------------- Code6$ = Code1$ + Code2$ + Code3$ + Code4$ + Code5$ ;zusammenzählen ;------------------------------- ;------------------------------- Text 20,20,Code6$,True,True ;Passwort anzeigen ;------------------------------- ;------------------------------- If KeyHit (1) ; Beenden ? Exit ; Ja,machen wa ! EndIf ;------------------------------- Next ;------------------------------- Doch dann woltle ich das so umbauen,das es bereits gezählte PW´s nicht mehr anzeigt: Zitat: Variable2 = 1
Dim ascii_code(5) Dim code(5) Dim durchlauf(99999) ;------------------------------- For Variable1 = 1 To Variable2 ;------------------------------- ;------------------------------- Variable2 = Variable2 + 1 SeedRnd MilliSecs() ;------------------------------- ;------------------------------- For i = 1 To 5 ascii_code(i) = Rand (0,244) Code(i) = Chr$(ascii_code(i)) If ascii_code(i) = 32 Then Code(i) = "" Next ;------------------------------- i = 0 ;------------------------------- ;------------------------------- Code6$ = Code1$ + Code2$ + Code3$ + Code4$ + Code5$ Durchlauf(Variable1) = Code6$ ;------------------------------- ;------------------------------- For i2 = 1 To Variable1 - 1 If Code6$ = Durchlauf(i2) Code6$ = "" EndIf Next ;------------------------------- i2 = 0 ;------------------------------- ;------------------------------- Text 20,20,Code6$,True,True ;------------------------------- ;------------------------------- If KeyHit (1) Exit EndIf ;------------------------------- Next ;------------------------------- Das klappte natürlich vorne und hinten nicht.Wo ist der fehler ? Ich denke es hat was mit den Dims und den For Schleifen zu tuhen, da ich dort mehr auf "gut glück" gearbeitet habe... Wäre neet wenn ihr mir helfen könntet. Gruß: Kernle PS: Hoffentlich ist das das richtige Forum ![]() |
||
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog] Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89 Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009 |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mir sind mehrere Sachen aufgefallen....
1. Warum erhöhst du immer variable2 in deiner For-Schleife, du kannst ja gerade am Anfang for Variable1 = 1 to 99999 machen.... 2. SeedRnd Millisecs() hat nichts in der Schleife zu suchen.... 3. Warum speicherst du den ascii-code einzel, und wandelst ihn dann um, das geht ja auch direkt... 4. Die Zeichen 1 - 31, sind "nicht sichtbare Zeichen", die brauchst du eigentlich nicht, und 32 willst du ja auch nicht, also reicht Rand(33,255) 5. Du hast die Variablen Code1... nicht mehr, dafür hast du jetzt die DIMs, das ist wohl der Fehler, warum dein Code nicht geht... (Ausserdem muss code nich ein String array sein => code$(5) 6. Da du ja alles verschieden Codes haben willst, musst du immer einen neuen generierern, darum springst du wieder zurück, wenn es der schon einen gleichen hat.... Code: [AUSKLAPPEN] const Variable2 = 99999 Dim code$(5) Dim durchlauf(99999) SeedRnd MilliSecs() For Variable1 = 1 To Variable2 .newcode i = 0 For i = 1 To 5 Code(i) = Chr$(Rand (33,255)) Next Durchlauf(Variable1) = Code(1)+Code(2)+Code(3)+code(4)+code(5) i2 = 0 For i2 = 1 To Variable1 - 1 If DurchLauf(Variable1) = Durchlauf(i2) then goto newcode Next cls Text 20,20,Code6$,True,True If KeyHit (1) then Exit Next cu simi |
||
![]() |
Kernle 32DLL |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah danke.Jetzt habe ich es verstanden.
Ich hatte da schon an die Idee mit dem sprigen gedacht, hatte aber gestern Abend keine Zeit mehr es auszuprobieren. Aber gut zu wissen ist,das 1-32 "nicht sichtbare" Zeichen sind. Das ist auch ganz wichtig für ein anderes kleines Programm das ich geschrieben habe. Nungut,danke schön ![]() Mfg,Kernle |
||
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog] Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89 Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009 |
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: das 1-32 "nicht sichtbare" Zeichen sind
vorsicht, 32 ist das leerzeichen |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group