The reason for the dynamic string length is that it uses a long to remember the length of the string. VB creates what is called a string descriptor for each dynamic string. Looks like this
------------------------------------
Descriptor type as 2bytes
Address of first byte of string : as long
length of the string: as long

Fixed is like this:
---------------------------------------------
Descriptor type as 2bytes
Address of first byte of string : as long
length of the string: as 2 byte integer
Max length of string: AS 2 BYTE INTEGER



Fixed len strings do this