Visual Basic Code of the Week (COTW)
http://www.codeoftheweek.com
Issue #59
Online Version at http://www.codeoftheweek.com/membersonly/bi/0059.html (paid subscribers only)
All content and source code is Copyright (c) 1998 by C&D Programming Corp. No part of this issue can be reprinted or distributed in any manner without express written permission of C&D Programming Corp.

Cool new product now available

NetMon 2.0 monitors the performance of your Internet connection. A graph of the last ten minutes' activity is maintained by NetMon for as long as your Internet connection is open. NetMon supports all released versions of Windows 95 Dial-Up Networking. You can use NetMon to monitor how well your internet connection is performing. It is incredibly useful! Download a FREE trial version at http://www.codeoftheweek.com/netmon

*** Special Code of the Week Subcription Offer ***

For a limited time we are offering some special bonuses when you sign up with our lifetime subscription. You will get all of the following:

That's $119 worth of products and services for only $59.95 (over 50% savings!). But hurry, this offer will not last long! To order, jump to http://www.codeoftheweek.com/order.html and order our lifetime subscription.

Notes about this ezine

If you are not a paid subscriber, you must have signed up for our free trial at http://www.codeoftheweek.com. Our ezine is not an unsolicited message (in other words a spam email). Keep in mind that if you signed up for our free trial you can still receive a total of four issues at no cost to you. After you receive the four issues you will be notified about continuing your subscription.

If you do not wish to continue to receive this ezine, please email us at cancel@codeoftheweek.com

Requirements for this Issue

The source code in this issue is designed for Visual Basic 5.0 and above. It could work in VB 3 or 4 if you modify the enum values to be numeric constants instead.

If you have any questions about this issue, please email us at questions@codeoftheweek.com

In this Issue

The module included in this issue shows how to generate a random number between any two numbers. It also provides a useful real-world example of a routine that can use the random number generator which generates random text strings.

basRandom

There are two public functions in this module that you can use. RandomNumberBetween generates a random number between any two numbers (positive or negative). RandomText generates a random text string that is a certain length. Additional options on random text are what case the characters appear in (lower, upper or mixed) and whether it inserts word breaks (blank spaces) or not.

Function RandomNumberBetween(lMin As Long, lMax As Long) As Long
Function RandomText(lBytes As Long, _
                        Optional eChType As eCharacterTypes, _
                        Optional bInsertWordBreaks As Boolean = True) As String

Parameters

Returns

RandomNumberBetween just returns a Long type number. RandomText returns a random string that is lBytes long.

Sample Usage

    Dim sTest As String

    ' Prints out 23 random lower case characters to the debug window
    sTest = RandomText(23, ctLower)
    Debug.Print sTest

    ' Prints out 76 random mixed case characters to the debug window
    sTest = RandomText(76, ctMixed)
    Debug.Print sTest

    ' Prints out 56 random upper case characters to the debug window
    sTest = RandomText(56, ctUpper)
    Debug.Print sTest

    ' Prints out 100 random upper case characters to the debug window
    ' without any word separators (blank spaces)
    sTest = RandomText(100, ctUpper, False)
    Debug.Print sTest

Source Code

Just paste this source code into a module called basRandom and include it in your project.

'----------------------------------------------------------------------
'
'   Module Name:    basRandom
'   Written By:     C&D Programming Corp.
'   Create Date:    10/98
'   Copyright:      Copyright 1998 by C&D Programming Corp.  Source
'                   code may not be reproduced except for use in a
'                   compiled executable.  All rights reserved.  If
'                   you would like to reprint any or all of this
'                   code please email us at info@codeoftheweek.com
'----------------------------------------------------------------------
Option Explicit

Public Enum eCharacterTypes
    ctUpper         ' upper case only
    ctLower         ' lower case only
    ctMixed         ' mixed case
End Enum

Function RandomNumberBetween(lMin As Long, lMax As Long) As Long
    RandomNumberBetween = (Rnd * (lMax - lMin)) + lMin
End Function

Function RandomText(lBytes As Long, _
                        Optional eChType As eCharacterTypes, _
                        Optional bInsertWordBreaks As Boolean = True) As String
    Dim sText As String
    Dim lPosCount As Long

    Randomize
    sText = String$(lBytes, " ")
    Select Case eChType
        Case ctUpper
            ' do loop to get upper case text.  65 is capital A, 90 is capital Z
            For lPosCount = 1 To lBytes
                Mid$(sText, lPosCount, 1) = Chr$(RandomNumberBetween(65, 90))
            Next
        Case ctLower
            ' do loop to get lower case text
            ' 97 is lowercase A, 122 is lowercase Z
            For lPosCount = 1 To lBytes
                Mid$(sText, lPosCount, 1) = Chr$(RandomNumberBetween(97, 122))
            Next
        Case ctMixed
            ' do loop to get mixed case text.  The logic is to generate a
            ' random number between 1 and 2.  If the number is 2 it
            ' generates a lowercase character otherwise it generates an
            ' uppercase value.
            For lPosCount = 1 To lBytes
                If RandomNumberBetween(1, 2) = 2 Then
                    Mid$(sText, lPosCount, 1) = Chr$(RandomNumberBetween(97, 122))
                Else
                    Mid$(sText, lPosCount, 1) = Chr$(RandomNumberBetween(65, 90))
                End If
            Next
    End Select

    ' If the user wants word breaks this routine will
    ' generate a random number from 2 to 10 to create
    ' words that are 2 to 10 characters long by inserting
    ' a blank at each random position
    If bInsertWordBreaks Then
        lPosCount = RandomNumberBetween(2, 10)
        While lPosCount < lBytes
            Mid$(sText, lPosCount, 1) = " "
            lPosCount = RandomNumberBetween(2, 10) + lPosCount
        Wend
    End If

    RandomText = sText
End Function

This document is available on the web

Paid subscribers can view this issue in HTML format. There is no additional source or information in the HTML formatted document. It just looks a little better since we have included some HTML formatting. Just point your browser to link at the top of this document.

Summary

That concludes this issue of COTW. We hope you find the source code useful in your development.

The below describes the ways you can supply us some feedback about COTW. We would like to see our members help mold COTW into the best Visual Basic source code resource available. But to do that we need your feedback about what you like and what you do not like about COTW.

Advertising

If you are interested in advertising in COTW please email us at sponsor@codeoftheweek.com Our rates are VERY reasonable, actually they are almost FREE. We reach over eight thousand Visual Basic developers each week.

How to tell us what you think

If you have any suggestions for topics you would like to see covered or questions about this issue, please email them to info@codeoftheweek.com or use online feedback form at http://www.codeoftheweek.com/feedback.html.

If you have any source code you would like to submit for possible inclusion in COTW, please fill out our online submission form at http://www.codeoftheweek.com/submission.html.

Contact Information

C&D Programming Corp.
PO Box 20128
Floral Park, NY 11002-0128
Phone or Fax: (212) 504-7945
Email: info@codeoftheweek.com
Web: http://www.codeoftheweek.com

Subscription Update

Thank you for trying Code of the Week for Visual Basic.

Your free trial expires after you receive your fourth issue. If you want to continue to receive Code of the Week you can get 52 issues of COTW for only $19.95. This is a full year of Visual Basic source code and information to help with all your development. So don't wait, subscribe now! The quickest way to subscribe is to jump to our online order form at http://www.codeoftheweek.com/order.html