Wie verschtle ich befehle in VisualBasic

Also ich programmiere mir einen Passwortgenerator der ein Passwort aus 10 Zeichen generiert, möchte die Anzahl der Zeichen auch erweitern.
Für jedes Zeichen brauch ich eine Variable um es zwischen zu speichern.
Ich hab Folgende Befehlszeilen (für zehn zeichen):
Dim a
Dim b
Dim c
Dim d
Dim x
Dim f
Dim g
Dim h
Dim i
Dim j
Dim Passwort
a = Chr(Rnd() * (130 - 32) + 32)
b = Chr(Rnd() * (130 - 32) + 32)
c = Chr(Rnd() * (130 - 32) + 32)
d = Chr(Rnd() * (130 - 32) + 32)
x = Chr(Rnd() * (130 - 32) + 32)
f = Chr(Rnd() * (130 - 32) + 32)
g = Chr(Rnd() * (130 - 32) + 32)
h = Chr(Rnd() * (130 - 32) + 32)
i = Chr(Rnd() * (130 - 32) + 32)
j = Chr(Rnd() * (130 - 32) + 32)

Das wird ziemlich lang und braucht Platz, deshalb möchte ich das verschachteln.

Ich währe sehr froh und dankbar wenn mir jemand sagen kann wie das geht.

Hallo,

Also ich programmiere mir einen Passwortgenerator der ein
Passwort aus 10 Zeichen generiert, möchte die Anzahl der
Zeichen auch erweitern.

OK, Schleife. :smile:

Für jedes Zeichen brauch ich eine Variable um es zwischen zu
speichern.

Ja, würde ich auch machen. Dafür gibt es Arrays.
Um sowohl große als auch kleine Zeichen und auch Zahlen verwenden zu können würde ich es etwa so machen:

Option Explicit

Private Sub Command1\_Click()
 Dim Zeichen(61) As String, i As Integer, Passwort As String
 For i = 0 To 25
 Zeichen(i) = Chr(i + Asc("A"))
 Next
 For i = 26 To 51
 Zeichen(i) = Chr((i - 26) + Asc("a"))
 Next
 For i = 52 To 61
 Zeichen(i) = Chr((i - 52) + Asc("0"))
 Next

 Randomize Timer
 Passwort = ""
 For i = 1 To 10
 Passwort = Passwort & Zeichen(Int(Rnd(1) \* 62))
 Next
 Label1.Caption = Passwort
End Sub

Gruß Rainer

Hallo Andreas,

Also ich programmiere mir einen Passwortgenerator der ein
Passwort aus 10 Zeichen generiert, möchte die Anzahl der
Zeichen auch erweitern.

okay. Du brauchst also einen Code in dem du 10 festlegst bzw später abänderst und als Ergebnis willst du ein Zufallspasswort was 10 Zeichen lang ist. Ist das so korrekt?

Aus welchen Zeichen soll es denn bestehen? Zeichen 32-255 sind möglich. Manche davon sind sind unkomfortabel da nur mit Alt+Zahlennnummer eingebbar.

Zu deinem Code,
a = Chr(Rnd() * (130 - 32) + 32)
warum nicht so:
a = Chr(Rnd() * 98 + 32)
das ergibt ja auch 32-129 was ich für seltsam halte denn 129 ist nicht druckbar. z ist 122. Wolltest du 32-122?

Für jedes Zeichen brauch ich eine Variable um es zwischen zu
speichern.

Ansichtssache ob du da so viele Variablen brauchst.
Beantworte bitte meine Frage aus welchem Bereich die Zeichen stammen sollen.

Vielleicht stehe ich grad auch gewaltig auf’m Schlauch denn ich kapier nicht mal die 61 in Rainers Code. Geschweige denn Passwort = „“

-))

Schöpfing
Gruß
Reinhard

Hallo Reinhard,

Vielleicht stehe ich grad auch gewaltig auf’m Schlauch denn
ich kapier nicht mal die 61 in Rainers Code.

*gg* ABC … Z, abc …z und noch 0123 … 9.
Die hätte man sicher auch noch auf verschiedene andere Arten zusammenschrauben können, mir ist zufällig dieser Weg eingefallen. :smile:

Geschweige denn
Passwort = „“

Den String Passwort erst mal leer machen, weil später kommt:

Passwort = Passwort & Zeichem(i)

OK. Passwort wird bei jedem Klick auf den Button neu initialisiert, ist dann so oder so leer, aber ich bau das gern so, das erspart u.U. Überraschungen, wenn man etwas am Code umbaut und ‚Passwort‘ global deklariert.

Gruß Rainer

Dankeschön, verstehe
Hallo Rainer,

*gg* ABC … Z, abc …z und noch 0123 … 9.
Die hätte man sicher auch noch auf verschiedene andere Arten
zusammenschrauben können, mir ist zufällig dieser Weg
eingefallen. :smile:

Ja, das sind 61. Sorry, ich habe mir nicht die Mühe gemacht deinen Code genauer zu prüfen, dann hätte ich sicher die 61 „erkannt“
Danke für die Verkürzung meiner Deutung der 61.
Ich denke wir beide beide warten jetzt mal am besten ab
was denn der Anfrager zu meinen Rückfragen so sagt.

Geschweige denn Passwort = „“

Den String Passwort erst mal leer machen, weil später kommt:
Passwort = Passwort & Zeichem(i)

Das meine ich nicht.

OK. Passwort wird bei jedem Klick auf den Button neu
initialisiert, ist dann so oder so leer,

Das meine ich.

aber ich bau das gern
so, das erspart u.U. Überraschungen, wenn man etwas am Code
umbaut und ‚Passwort‘ global deklariert.

Sag das doch gleich dazu, dann steh ich auf keinem Schlauch :smile:)
Und Gewohnheiten wie „bau das gern“ sind ja sehr okay denn sie haben Gründe, gute Gründe.

For x = 0 to ubound(Blaetter)

kann schiefgehen wenn man nicht weiß in welchem Fremdbenutzer Modul dies abläuft.

Gewohnheitsmäig das so zu schreiben:
For x = lbound(Blaetter) to ubound(Blaetter)
ist schlichtweg besser, denn da ist man auf der sicheren Seite.
Also behalte das bei gewohnheitsmäig auf 0 oder „“ zu setzen.

Wenn es hier in den paar Codes die du oder ich hier zeigen nicht wichtig ist, na und, wie du mal sagtest, kleine schnelle Fingerübung das mal da mitreinzuschreinen.
Viel wichtiger daß man das bei komplexeren Codes permanent benutzt.
Grad bei globalen Variablen und Prozeduren in 40 Modulen.
Da ist das ein Muss.

*grins* ich persönlich hab nicht so eine Monsterdatei wo 40 Module notwendig wären weil alle schon mit mit reichlich Prozeduren gefüllt sind.
Vom reinen Mitlesen har weiß ich daß genau aus dem Grund den du quasi erwähnst globale Variablen nicht sehr gemocht werden.

Grund ist sehr klar. Im Modul X in Prozedur Y meldet sich der Debugger
und mokiert sich über die globale Variable.
Na dann viel Spass mit F8 o.ä. die Ursache zu finden…

Schöpfing
Reinhard

Gruß Rainer

Also die Zeichen sollen alljene die sein, die ich mit der Tastatur eingeben kann.

Also die Zeichen sollen alljene die sein, die ich mit der
Tastatur eingeben kann.

Hallo Andreas,

wenn ich das wörtlich nehme so sind das aber eine ganze Menge, so 60000
meinste die alle? :smile:

Rainer hat ja scheinbar dementsprechend vorgearbeitet, reichen dir
A-Z, a-z, 0-9, dazu noch !"§$%&/()=?,.-;:_äöüÄÖÜ

Soll das so geschehen?

Gruß
Reinhard