The source code in this issue is designed for all versions of Visual Basic.
This issue introduces an additional string handling/management routine. The routine allows you to take a delimited string (example: "123,433,566,112,2,4,111") and convert it to an array. Some scenarios where this technique would be useful is during data import/export routines, simple flat-file database management and easy storage for arrays. In the next issue we will discuss converting an array into a string that can be used by this routine.
Public Sub StringToGenericArray(sData As String, vArray As Variant, ByVal sDelimiter As String)
None unless an error occurs. If an error occurs this routine will raise the error to the calling subroutine. The typical error that will be returned is a Type Mismatch (error 13) when an array of a certain data type is passed and the data in the string does not match that data type.
We will demonstrate two examples of this routine. The first one will be a successful use of the routine and the second will show what happens when the array data type does not match the data contained in the data string.
Example 1
Dim sData As String Dim aData() As Long sData = "1,5,33,7,332" StringToGenericArray(sData, aData, ",")
The resulting array (aData) will contain 5 elements: the numbers 1, 5, 33, 7 and 332.
Example 2
Dim sData As String Dim aData() As Long On Error Goto Handler sData = "1,5,Dave,7,332" StringToGenericArray(sData, aData, ",") .. Do whatever you need to do with the array .. Exit Sub Handler: MsgBox "Error " & Err.Number & " " & Err.Description Exit Sub
An error will occur and be raised. In this example you will see a Message Box appear with the error information in it.
To see the source code for this issue you must be a subscriber to Code of the Week. If you are a subscriber the source code is available at the following address: http://www.codeoftheweek.com/membersonly/bi/0012.html
We have used a technique that we call pre-allocate for allocating the elements in our array. Since we are using the redim preserve feature which can take a significant amount of time to execute we attempt to call it as little as possible. What this routine does is pre-allocate 100 elements at the start of the routine. If there are less than 100 elements found in this routine, the redim preserve function will only execute once (upon leaving this routine). If there are more than 100 elements found, additional elements are added in chunks of 25. Overall this should help minimize the calls to redim preserve which will help make this routine faster.
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.
We are currently planning for the next several issues of Code of the Week. If you have any suggestions of source code that you would like to see covered, please jump to our feedback page at http://www.codeoftheweek.com/feedback.html and let us know.
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.
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
We accept payment by Mastercard, Visa, check or money order. All payments must be in U.S. Dollars. If you are an international customer paying by credit card is usually the easiest method of payment.
If you prefer not to visit our web site:
1. Enclose a note with your email address and name.
2. If you are paying by credit card, make sure you include the credit card number, credit card expiration and name on the credit card and your signature. If you are paying by check, make it payable to C&D Programming Corp.
3. Mail it to (credit card payments can be faxed to (212) 504-7945):
C&D Programming Corp.
PO Box 20128
Floral Park, NY 11002-0128
4. As soon as we receive your payment you will be added to our paid subscriber list.