Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
Sep 30, 2000

LenB has changed from VB5 to VB6

Visual Basic stores UDTs in unpacked format, that is it alignes all UDT elements to the double word (except that Integers and Boolean are aligned to the word, and byte elements aren't aligned at all). To keep the elements aligned VB adds padding bytes where necessary. For instance the structure:

Type MyType
    Member1 As Integer
    Member2 As Long
End Type
has a "real" size of 6 bytes, but VB adds 2 bytes between Member1 and Member2 in order to maintain the dword alignment of second member.

In VB5 both Len(MyType) and LenB(MyType) return 6. In fact, under VB5 these two values are different only when the UDT contains a fixed-length string: in this case, Len() considers the length that the string would have when converted to ANSI (such as when you store the UDT to a file), while LenB() considers the string in Unicode format.

In VB6 LenB has been modified and now returns the real size of the structure, including padding bytes: therefore LenB(MyType) returns 8 under VB6. If you aren't aware of this detail you might introduce subtle bugs when you port a VB5 app to VB6.

Alberto Falossi
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date