vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Zufallsstring wird nur mit nachfolgender Msgbox erzeugt ? 
Autor: manuelhasi
Datum: 25.05.21 20:34

Hallo zusammen,

mit folgender Funktion erzeuge ich einen Zufallsstring:

 Public Enum RandomTextType
        LowerCaseLetters = 1
        UpperCaseLetters = 2
        LowerCaseLettersMixedNumbers = 3
        UpperCaseLettersMixedNumbers = 4
        MixedAll = 5
    End Enum
 ''' <summary>
    '''   Erzeugen von Zufallsstring
    ''' </summary>
    ''' <param name="theLen">die Länge des Strings</param>
    ''' <param name="art">die Art der Zusammensetzung des Strings</param>
    Public Function CreateRandomString(theLen As Short, art As RandomTextType) _
      As String
        Const lowerChars = "abcdefghijklmnopqrstuvwxyzäöüß"
        Const upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ"
        Const numericChars = "0123456789"
        Const specChars = "!§$%&/()=?{[]}+*~#'-_.:,;<>"
 
        Dim rs As String = ""
        Dim ast As String = "", le, ix As Short
        Dim rnd As New Random()
 
        ' Zusammensetzung gemäß vorgegebener Art
        Select Case art
            Case RandomTextType.LowerCaseLetters
                ast = lowerChars
            Case RandomTextType.UpperCaseLetters
                ast = upperChars
            Case RandomTextType.LowerCaseLettersMixedNumbers
                ast = lowerChars + numericChars
            Case RandomTextType.UpperCaseLettersMixedNumbers
                ast = upperChars + numericChars
            Case RandomTextType.MixedAll
                ast = lowerChars + upperChars + numericChars + specChars
        End Select
 
        le = ast.Length - 1
        For i As Short = 1 To theLen
            ix = rnd.Next(0, le)
            rs += ast.Substring(ix, 1)
        Next
 
        ' Rückgabe des Strings
        Return rs
    End Function
Dieser soll jetzt als icalendar formatiert werden

Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter("D:\pPA - praktische" & _
          "Pflegeausbildung\pPA\pPA\Kalender-Export.ics", False)
    file.WriteLine("BEGIN:VTIMEZONE")
        file.WriteLine("TZID:Europe/Berlin")
        file.WriteLine("X-LIC-Location:Europe/Berlin")
        file.WriteLine("BEGIN:DAYLIGHT")
        file.WriteLine("TZOFFSETFROM:+0100")
        file.WriteLine("TZOFFSETTO:+0200")
        file.WriteLine("TZNAME:CEST")
        file.WriteLine("DTSTART:19700329T020000")
        file.WriteLine("RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3")
        file.WriteLine("End:DAYLIGHT")
        file.WriteLine("BEGIN:STANDARD")
        file.WriteLine("TZOFFSETFROM:+0200")
        file.WriteLine("TZOFFSETTO:+0100")
        file.WriteLine("TZNAME:CET")
        file.WriteLine("DTSTART:19701025T030000")
        file.WriteLine("RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10")
        file.WriteLine("End:STANDARD")
        file.WriteLine("End:VTIMEZONE")
    For x As Integer = 0 To 20
              Dim Zufallszahl As String = CreateRandomString(100, _
                RandomTextType.MixedAll)
file.WriteLine("UID:" & Zufallszahl)
next
Warum wird die Funktion nur ausgeführt, wenn ich im For/Next-Teil eine MsgBox einbaue?


 For x As Integer = 0 To 20
              Dim Zufallszahl As String = CreateRandomString(100, _
                RandomTextType.MixedAll)
MsgBox(Zufallszahl)
file.WriteLine("UID:" & Zufallszahl)
next
Lieben Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zufallsstring wird nur mit nachfolgender Msgbox erzeugt ? 
Autor: Manfred X
Datum: 26.05.21 08:31

Hallo!

Mir fällt nur auf, dass Du nicht typ-sicher programmierst.
Nutze in Zukunft "Option Strict ON".
Random ist auf Klassen-ebene zu deklarieren, damit es wie
vorgesehen arbeiten kann.
Die Obergrenze der Next-Methode muss 1 über der maximal
gewünschten Zufallszahl liegen (exklusiv).

  Dim rnd As New Random(Now.Millisecond)
 
  Public Function CreateRandomString(theLen As Short, art As RandomTextType) As _
    String
        Const lowerChars As String = "abcdefghijklmnopqrstuvwxyzäöüß"
        Const upperChars As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ"
        Const numericChars As String = "0123456789"
        Const specChars As String = "!§$%&/()=?{[]}+*~#'-_.:,;<>"
 
        Dim rs As String = ""
        Dim ast As String = "", le, ix As Integer
 
        ' Zusammensetzung gemäß vorgegebener Art
        Select Case art
            Case RandomTextType.LowerCaseLetters
                ast = lowerChars
            Case RandomTextType.UpperCaseLetters
                ast = upperChars
            Case RandomTextType.LowerCaseLettersMixedNumbers
                ast = lowerChars + numericChars
            Case RandomTextType.UpperCaseLettersMixedNumbers
                ast = upperChars + numericChars
            Case RandomTextType.MixedAll
                ast = lowerChars + upperChars + numericChars + specChars
        End Select
 
        le = ast.Length - 1
        For i As Short = 1 To theLen
            ix = rnd.Next(0, le + 1)
            rs &= ast.Substring(ix, 1)
        Next
 
        ' Rückgabe des Strings
        Return rs
  End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Zufallsstring wird nur mit nachfolgender Msgbox erzeugt ? 
Autor: manuelhasi
Datum: 26.05.21 10:24

Guten Morgen

vielen Dank für die Hilfe.. ich habe "Option Strict On" aktiviert und tatsächlich sofort einige Fehler gefunden.. Werde ich ich Zukunft nutzen, danke..

Der Fehler in der Funktion hing tatsächlich mit den fehlerhaften DatenTypen zusammen. Jetzt funktioniert er.

Vielleicht sollte darauf im Tipp hingewiesen werden



https://www.vbarchiv.net/tipps/details.php?id=2480
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel