Zeichenzufallsgenerator in Visual Basic

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    Zeichenzufallsgenerator in Visual Basic

    Hallo zusammen,

    ich suche jetzt schon eine ganze Weile, stoße im Netz jedoch immer auf was anderes. Ich will einfach einen Button, wenn ich auf diesen klicke soll mir ein "Key" generiert werden der aus Buchstaben, Zahlen und Sonderzeichen besteht und diesen dann in einer Textbox ausgeben. Nicht mehr und nicht weniger ich weiss hört sich leicht an, finde jedoch im Netz nur Code-Snippets bei denen der Key dann in einer MessageBox steht, wenn ich versuche das Ergebnis in einer Textbox unterzubringen scheitert es immer. X/

    Vielen Dank im Voraus.
    Gruß
    Schoko

    Verschoben. ~Trade
    F**k the Society, we are the HighSociety [420]! :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

    Machst dir ne Funktion die dir den Key zusammensetzt und einen Rückgabe wert hat.
    Dann setzt du die .Text Eigenschaft der Textbox = Dieser Funktion.

    Kein wirklicher Code aber zur Veranschaulichung
    Als Beispiel:

    VB.NET-Quellcode

    1. Control.Text = DeineFunktion
    2. Private Function DeineFunktion as String 'bsp. für nen key
    3. DeineFunktion = DeineFunktion & 'Code für 4 random zahlen
    4. DeineFunktion = DeineFunktion & 'Code für 4 random zahlen die als Ascii Chars behandelst welche umgewandelt werden.
    5. DeineFunktion = DeineFunktion & 'Code für 4 random zahlen
    6. End Function

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PSJ“ ()

    @Schoko19 Soll das ein Passwort-Generator werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    hallo @Schoko19

    Kannst du in dein Click-Event einbauen und/oder entsprechend noch anpassen mit z.B. Sonderzeichen

    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.Text
    4. Module Module1
    5. Private _rnd As New Random
    6. Sub Main()
    7. Dim rndKey As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    8. _rnd = New Random
    9. Dim keyLen As Integer = 256
    10. Dim sb As New StringBuilder(keyLen)
    11. For i As Integer = 0 To keyLen - 1
    12. sb.Append(rndKey(_rnd.Next(0, rndKey.Length)))
    13. Next
    14. Stop
    15. End Sub
    16. End Module


    Oder möchtest du die Spannbreite des AsciiCodes, dass wäre noch einfacher. Das wäre Zahlenbereich 1-255.


    Edir:Danke für den Hinweis @jvbsl

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    @exc-jdbi:
    den Zeichenzugriff sollte man mittels []-operator machen, sonst hast du zwei unnötige Schleifen(eine beim auslesen und eine beim wieder rein schreiben)+mehr Stackverbrauch.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Zunächst entschuldigt bitte meine verspätete Antwort ich war im Urlaub. 8-)

    Ich habe den Code von @exc-jdbi genutzt, weiss jetzt leider nur nicht wie man den Key in der Textbox anzeigen lassen kann?
    Srry falls es einfach ist aber stehe grade völlig auf dem Schlauch...

    Danke und Grüße
    Schoko
    F**k the Society, we are the HighSociety [420]! :D
    Hier der Code von @exc-jdbi nur halt als Function, welche einen String zurückgibt:

    VB.NET-Quellcode

    1. Private _rnd As New Random
    2. Function RndString() As String
    3. Dim rndKey As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    4. _rnd = New Random
    5. Dim keyLen As Integer = 256
    6. Dim sb As New StringBuilder(keyLen)
    7. For i As Integer = 0 To keyLen - 1
    8. sb.Append(rndKey(_rnd.Next(0, rndKey.Length)))
    9. Next
    10. Return sb.ToString
    11. End Function

    Aufruf z.B. mit:

    VB.NET-Quellcode

    1. Dim RndStr As String = RndString()
    2. ' oder
    3. TextBox1.Text = RndString()


    Edit: @Schoko19 das "Hilfreich" hätte allerdings @exc-jdbi verdient, der allermeiste und entscheidende Code stammt ja von ihm!

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Thias“ ()

    Vielen Dank an alle :)

    habe nun folgenden funktionierenden Code:

    VB.NET-Quellcode

    1. Private _rnd As New Random
    2. Function RndString() As String
    3. Dim rndKey As String = "abcdefghijklmnopqrstuvwxyz!§$%&/()=?*+#:;-<>ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    4. _rnd = New Random
    5. Dim keyLen As Integer = 50
    6. Dim sb As New StringBuilder(keyLen)
    7. For i As Integer = 0 To keyLen - 1
    8. sb.Append(rndKey(_rnd.Next(0, rndKey.Length)))
    9. Next
    10. Return sb.ToString
    11. End Function
    12. 'Und der Button welcher den Key in die Textbox bringt:
    13. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    14. TextBox4.Text = RndString()
    15. End Sub


    @Thias ja habe nun beide als Hilfreich markiert da der Code von @exc-jdbi stammt, du mir aber im Prinzip genausoviel geholfen hast:)
    @MichaHo mein Fehler :D korrigiert ;)
    F**k the Society, we are the HighSociety [420]! :D

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Schoko19“ ()