Probleme mit Dims + for schleifen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Kernle 32DLL

Betreff: Probleme mit Dims + for schleifen

BeitragSa, Apr 09, 2005 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Razz
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

BeitragSo, Apr 10, 2005 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Apr 10, 2005 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

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

BeitragSo, Apr 10, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
das 1-32 "nicht sichtbare" Zeichen sind


vorsicht, 32 ist das leerzeichen

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group