PRB: Can't Have Fixed Length Strings >32K in 32-bit Windows (129802)



The information in this article applies to:

  • Microsoft Visual Basic Standard Edition, 32-bit, for Windows 4.0
  • Microsoft Visual Basic Professional Edition, 32-bit, for Windows 4.0
  • Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows 4.0

This article was previously published under Q129802

SYMPTOMS

Attempting to create fixed-length strings within a user-defined type in the 32-bit version of Microsoft Visual Basic version 4.0 generates this error:
"Fixed or static data can't be larger than 64K"

CAUSE

Because 32-bit Microsoft Visual Basic uses Unicode to store strings and Unicode requires two bytes per character in a string, fixed-length strings take twice as many bytes of storage as the 16-bit versions of Visual Basic. If you assign or dimension more that 32K characters to a string, the storage actually exceeds the 64K limit of Visual Basic user-defined types.

RESOLUTION

Larger strings can be assigned to string elements of user-defined types by using variable-length strings instead of fixed-length strings.

STATUS

This behavior is by design.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Start a new project in Visual Basic. Form1 is created by default.
  2. Add a code module (Module1) to your project by choosing Module from the Insert menu.
  3. Add the following code to the General Declarations section of Module1:
          Type MyType
             MyString As String * 33000
          End Type
  4. Start the program by choosing Start from the Run menu or by pressing the F5 key. You should see the following run-time error message:
    "Fixed or static data can't be larger than 64K"

Modification Type:MajorLast Reviewed:11/18/2003
Keywords:kb32bitOnly kberrmsg kbprb kbProgramming KB129802 kbAudDeveloper