ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 27.07.2000

Diese Seite wurde zuletzt aktualisiert am 27.07.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zeichensalat per Zufall

Zurück...


Anzeige

(-hg) mailto:hg_rndstring@aboutvb.de

Ob als Testdaten oder als Passwörter: Strings, die aus einer zufällig erzeugten Zeichenfolge bestehen, werden Sie immer brauchen können. Die Erzeugung einer zufälligen Zahl aus einem vorgegebenen Bereich ist mittels der Visual Basic-Funktion MSDN Library - VB RndRnd nicht sonderlich schwierig. Der in Visual Basic eingebaute Zufallszahlengenerator wird zunächst mit der Anweisung MSDN Library - VB RandomizeRandomize und irgend einem beliebigen Wert (wir nehmen den Rückgabewert der MSDN Library - VB TimerTimer-Funktion) initialisiert, damit er nicht immer die gleiche Zufallsfolge liefert. Anschließend wird nach der folgenden Formel (siehe auch "Wie der Zufall es will") eine Zufallszahl im gewünschten Bereich ermittelt:

Zufallszahl = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)

Für einen Zufalls-String benötigen wir nun aus dem Bereich der möglichen Zeichen-Codes (0 bis 255 - Unicode-Zeichen lassen wir hier einmal außen vor) für jedes Zeichen entsprechend der gewünschten Länge eine solche Zufallszahl. Doch nicht immer ist es sinnvoll, jedes beliebige Zeichen zuzulassen, sondern etwa nur "echte" Ascii-Zeichen (7-Bit, Zeichen-Codes 0 bis 127), oder nur Ziffern, oder nur Zeichen aus dem einfachen Alphabet (A bis Z), und gegebenenfalls nur Groß- oder Kleinbuchstaben.

Die Funktion RndString liefert Ihnen solchermaßen spezifizierte Zufalls-Strings. Sie geben im ersten Parameter die gewünschte Länge an. In den folgenden optionalen Parametern legen Sie fest, aus welchem Bereich die Zeichen "gezogen" werden sollen (CharTypes), ob es nur Groß- oder Kleinbuchstaben oder auch gemischte Folgen sein sollen (CharCases), und ob der Zufalls-String auch Leerzeichen enthalten darf (IncludeSpace).

Public Enum RndCharTypeConstants
  rntAll
  rntAll7Bit
  rntAlpha
  rntNumeric
  rntAlphaNumeric
End Enum

Public Enum RndCharCaseConstants
  rncMixed
  rncLCase
  rncUCase
End Enum
  
Public Function RndString(ByVal Length As Long, _
 Optional ByVal CharTypes As RndCharTypeConstants, _
 Optional ByVal CharCases As RndCharCaseConstants, _
 Optional ByVal IncludeSpace As Boolean) As String

  Dim nRndString As String
  Dim nAsc As Integer
  Dim i As Integer
  
  If Length <= 0 Then
    Exit Function
  End If
  nRndString = Space$(Length)
  Randomize Timer
  Select Case CharTypes
    Case rntAll
      If IncludeSpace Then
        For i = 1 To Length
          nAsc = Int(224 * Rnd + 32)
          Mid$(nRndString, i, 1) = Chr$(nAsc)
        Next
      Else
        For i = 1 To Length
          nAsc = Int(223 * Rnd + 33)
          Mid$(nRndString, i, 1) = Chr$(nAsc)
        Next
      End If
    Case rntAll7Bit
      If IncludeSpace Then
        For i = 1 To Length
          nAsc = Int(96 * Rnd + 32)
          Mid$(nRndString, i, 1) = Chr$(nAsc)
        Next
      Else
        For i = 1 To Length
          nAsc = Int(96 * Rnd + 32)
          Mid$(nRndString, i, 1) = Chr$(nAsc)
        Next
      End If
    Case rntAlpha
      Select Case CharCases
        Case rncMixed
          For i = 1 To Length
            Do
              nAsc = Int(58 * Rnd + 65)
              Select Case nAsc
                Case 65 To 90, 97 To 122
                  Exit Do
              End Select
            Loop
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
        Case rncLCase
          For i = 1 To Length
            nAsc = Int(26 * Rnd + 97)
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
        Case rncUCase
          For i = 1 To Length
            nAsc = Int(26 * Rnd + 65)
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
      End Select
    Case rntNumeric
      For i = 1 To Length
        nAsc = Int(10 * Rnd + 48)
        Mid$(nRndString, i, 1) = Chr$(nAsc)
      Next
    Case rntAlphaNumeric
      Select Case CharCases
        Case rncMixed
          For i = 1 To Length
            Do
              nAsc = Int(75 * Rnd + 48)
              Select Case nAsc
                Case 48 To 57, 65 To 90, 97 To 122
                  Exit Do
              End Select
            Loop
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
        Case rncLCase
          For i = 1 To Length
            Do
              nAsc = Int(75 * Rnd + 48)
              Select Case nAsc
                Case 48 To 57, 97 To 122
                  Exit Do
              End Select
            Loop
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
        Case rncUCase
          For i = 1 To Length
            Do
              nAsc = Int(53 * Rnd + 48)
              Select Case nAsc
                Case 48 To 57, 65 To 90
                  Exit Do
              End Select
            Loop
            Mid$(nRndString, i, 1) = Chr$(nAsc)
          Next
      End Select
  End Select
  RndString = nRndString
End Function

Modul modRndString (modRndString.bas - ca. 4,3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer