You are currently offline, waiting for your internet to reconnect

How to Initialize Static Variables to Nonzero Values

This article was previously published under Q119737
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
SUMMARY
Normally in Visual Basic, when a static variable is declared inside aFunction or Sub procedure, it gets initialized to 0 (numeric data type) oran empty string, "" (string data type), by default. This article shows away to initialize these variables to values other than the default.
MORE INFORMATION
When a variant variable is first declared, it is initialized with the EMPTYvalue by default. The idea here is to take advantage of this fact, bytesting a dummy variant static variable with the IsEmpty function andinitializing the other static variables to the values you want if thisfunction returns TRUE. It is important to set the dummy variant to somevalue after you initialize your static variables, so that IsEmpty alwaysreturns FALSE for subsequent calls to the subroutine, and that because ofthis the other static variables are not reinitialized.

Here is an example that shows how to initialize a static variant, integer,and string variable declared in a Sub called InitStatic:

Step-by-Step Example

  1. Start a new project in Visual Basic. Form1 is created by default.
  2. On Form1, add a command button (Command1).
  3. Add the following code to the "(general) (declarations)" section of Form1:
       Sub initstatic ()      Static Dummy, V, I As Integer, S As String      ' The code in the following if statement will be executed only once:      If IsEmpty(Dummy) Then         ' Initialize the dummy variant, so that IsEmpty returns FALSE for         ' subsequent calls.         Dummy = 0         ' Initialize the other static variables.         V = "Great"         I = 7         S = "Visual Basic"      End If      Print "V="; V, "I="; I, "S="; S      ' Static variables will retain their values over calls when changed.      V = 7      I = I + 7      S = Right$(S, 5)   End Sub						
  4. Add the following code to the Command1_Click() event:
       Sub Command1_Click()      initstatic   End Sub						
  5. Run the program (press the F5 key). Then double-click the Command1 button to see the results.
2.00 3.00
Properties

Article ID: 119737 - Last Review: 12/09/2003 14:34:34 - Revision: 2.0

  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 1.0 Standard Edition
  • KB119737
Feedback