Option Strict On
Imports System.Text
''' 27072005
''' class
'''
''' REQUIRES PROPERTIES: KeyLetters, KeyNumbers, MaxChars
'''
Public Class RandomKeyGenerator
Dim Key_Letters As String
Dim Key_Numbers As String
Dim Key_Chars As Integer
Dim LettersArray As Char()
Dim NumbersArray As Char()
''' 27072005
''' property
'''
''' WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
'''
Protected Friend WriteOnly Property KeyLetters() As String
Set(ByVal Value As String)
Key_Letters = Value
End Set
End Property
''' 27072005
''' property
'''
''' WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
'''
Protected Friend WriteOnly Property KeyNumbers() As String
Set(ByVal Value As String)
Key_Numbers = Value
End Set
End Property
''' 27072005
''' property
'''
''' WRITE ONLY PROPERTY. HAS TO BE SET BEFORE CALLING GENERATE()
'''
Protected Friend WriteOnly Property KeyChars() As Integer
Set(ByVal Value As Integer)
Key_Chars = Value
End Set
End Property
''' 27072005
''' function
'''
''' GENERATES A RANDOM STRING OF LETTERS AND NUMBERS. LETTERS CAN BE RANDOMLY CAPITAL OR SMALL.
'''
''' RETURNS THE RANDOMLY GENERATED KEY
Function Generate() As String
Dim i_key As Integer
Dim Random1 As Single
Dim arrIndex As Int16
Dim sb As New StringBuilder
Dim RandomLetter As String
''' CONVERT LettersArray & NumbersArray TO CHARACTR ARRAYS
LettersArray = Key_Letters.ToCharArray
NumbersArray = Key_Numbers.ToCharArray
For i_key = 1 To Key_Chars
''' START THE CLOCK - LAITH - 27/07/2005 18:01:18 -
Randomize()
Random1 = Rnd()
arrIndex = -1
''' IF THE VALUE IS AN EVEN NUMBER WE GENERATE A LETTER, OTHERWISE WE GENERATE A NUMBER - LAITH - 27/07/2005 18:02:55 -
''' THE NUMBER '111' WAS RANDOMLY CHOSEN. ANY NUMBER WILL DO, WE JUST NEED TO BRING THE VALUE ABOVE '0' - LAITH - 27/07/2005 18:40:48 -
If (CType(Random1 * 111, Integer)) Mod 2 = 0 Then
''' GENERATE A RANDOM LOCATION IN THE LETTERS CHARACTER ARRAY - LAITH - 27/07/2005 18:47:44 -
Do While arrIndex < 0
arrIndex = Convert.ToInt16(LettersArray.GetUpperBound(0) * Random1)
Loop
RandomLetter = LettersArray(arrIndex)
''' CREATE ANOTHER RANDOM NUMBER. IF IT IS ODD, WE CAPITALIZE THE LETTER - LAITH - 27/07/2005 18:55:59 -
If (CType(arrIndex * Random1 * 99, Integer)) Mod 2 <> 0 Then
RandomLetter = LettersArray(arrIndex).ToString
RandomLetter = RandomLetter.ToUpper
End If
sb.Append(RandomLetter)
Else
''' GENERATE A RANDOM LOCATION IN THE NUMBERS CHARACTER ARRAY - LAITH - 27/07/2005 18:47:44 -
Do While arrIndex < 0
arrIndex = Convert.ToInt16(NumbersArray.GetUpperBound(0) * Random1)
Loop
sb.Append(NumbersArray(arrIndex))
End If
Next
Return sb.ToString
End Function
End Class