Hallo
hab nach langer Zeit wieder versucht etwas zu Programmieren. (einen Zeichenketten Generator)
Hab es mit Dictionary versucht, wobei ich sagen muß das es das erste mal ist das ich Dictionary anwende.
Hab auf "Google" und "YouTube" Beiträge zu diesem Thema gesucht und dadurch ist mein Programm entstanden.
Der unten benutzte Code funktioniert, soweit ich das beurteilen kann, ganz gut, bis auf die doppelten Ziehungen.
Mit dieser Zeile, hab ich versucht mein Problem zu lösen,aber es funktioniert nicht
Bitte um Hilfe dafür.
Spoiler anzeigen
Ich bedanke mich schon mal ,und Hoffe auf Hilfe.
MfG. Willi
hab nach langer Zeit wieder versucht etwas zu Programmieren. (einen Zeichenketten Generator)
Hab es mit Dictionary versucht, wobei ich sagen muß das es das erste mal ist das ich Dictionary anwende.
Hab auf "Google" und "YouTube" Beiträge zu diesem Thema gesucht und dadurch ist mein Programm entstanden.
Der unten benutzte Code funktioniert, soweit ich das beurteilen kann, ganz gut, bis auf die doppelten Ziehungen.
Mit dieser Zeile, hab ich versucht mein Problem zu lösen,aber es funktioniert nicht
Bitte um Hilfe dafür.
VB.NET-Quellcode
- Public Sub btnGenerator_Click(sender As Object, e As EventArgs) Handles btnGenerator.Click
- txtZeichenkette.Clear()
- Dim z As Integer ' Zufallszahl
- Dim i As Integer ' Zähler für anzahl Keys
- Dim k As Integer ' Zähler für Zeichenkettelänge
- Dim lan As Integer 'Zeichenkettelänge
- Dim r As New System.Random ' Zufallsbereich (von bis)
- Dim dic As New Dictionary(Of Integer, String())
- Dim ak As Integer
- ak = 0 'Key
- If chkGrossBuchstaben.Checked = True Or chkKleinBuchstaben.Checked = True Or chkSonderzeichen.Checked = True Or chkZahlen.Checked = True Then ' wenn Checkbox.Checked = True
- If chkGrossBuchstaben.Checked Then
- ak += 1 'erhöht Key um 1
- dic.Add(ak, New String() {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",
- "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"})
- End If
- If chkKleinBuchstaben.Checked Then
- ak += 1 'erhöht Key um 1
- dic.Add(ak, New String() {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
- "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"})
- End If
- If chkZahlen.Checked Then
- ak += 1 'erhöht Key um 1
- dic.Add(ak, New String() {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"})
- End If
- If chkSonderzeichen.Checked Then
- ak += 1 'erhöht Key um 1
- dic.Add(ak, New String() {"<", ",", ".", "-", "#", "+", ">", ";", ":", "-", "*", "!", "§", "$", "%",
- "&", "(", ")", "=", "?", "ß"})
- End If
- Else
- If chkGrossBuchstaben.Checked = False And chkKleinBuchstaben.Checked = False And chkSonderzeichen.Checked = False And chkZahlen.Checked = False Then
- MessageBox.Show("Bitte Zeichen auswählen")
- Exit Sub
- End If
- End If
- For k = 1 To Convert.ToInt32(ncZeichenlaenge.Value) ' gewählte Zeichenkettelänge
- Do
- For i = 1 To dic.Keys.Count ' zählt Anzahl der Keys
- z = r.Next(0, dic.Item(i).Length) ' zieht eine Zufallszahl
- Dim value() As String = dic.Item(i) ' gezogene Zeichen
- txtZeichenkette.Text += value(z) ' ausgabe zufalls Zeichenkette
- 'dic.Remove(i, dic.Item(i))
- lan += 1 ' Zeichenkettelänge um 1 erhöhen
- If lan = Convert.ToInt32(ncZeichenlaenge.Value) Then ' wenn Zeichenkettelänge ist gleich Zähler Zeichenkettelänge
- txtMehrereZeichenketten.Text += txtZeichenkette.Text & Environment.NewLine ' Zeichenkette in Textbox ausgeben
- Exit Sub
- End If
- Next i
- Loop
- Next k
- End Sub
Ich bedanke mich schon mal ,und Hoffe auf Hilfe.
MfG. Willi