|
|
|
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: |
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.
|
|
|
|
Submitted By :
Nayan Patel
(Member Since : 5/26/2004 12:23:06 PM)
|
|
|
Job Description :
He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting. |
View all (893) submissions by this author
(Birth Date : 7/14/1981 ) |
|
|