220 likes | 397 Views
Michael S. Kaplan Software Design Engineer Microsoft. A Case Study on Unicode Integration: Microsoft Visual Basic, v 3.0 to v. 7.0. http://www.i18nWithVB.com/. DISCLAIMER. The purpose(s) of Visual Basic. Making Windows development easier Promote the Windows platform through ISVs who use it
E N D
Michael S. Kaplan Software Design Engineer Microsoft A Case Study on Unicode Integration: Microsoft Visual Basic, v 3.0 to v. 7.0 http://www.i18nWithVB.com/
DISCLAIMER San Jose, California (IUC22)
The purpose(s) of Visual Basic • Making Windows development easier • Promote the Windows platform through ISVs who use it • The "apple in Bill's eye" San Jose, California (IUC22)
International support in the early versions (1.0 – 3.0) • Very limited! • Multiple versions of the product codebase • Bugs found in one language version often not fixed elsewhere • NO Unicode support San Jose, California (IUC22)
VB 4.0 - a time for choices San Jose, California (IUC22)
Keep VB in 16 bit, and take advantage of the support for Win16 applications • Easy for VB to do • Useless for the Win32 platform itself • No international support at all San Jose, California (IUC22)
Move VB to Win32 entirely, leveraging the emerging NT platform's full support of Unicode through its "W" APIs. • Great international solution • Poor solution for Windows 95 San Jose, California (IUC22)
Move VB to Win32 but still with a code page model rather than a Unicode one, using the "A" APIs. • Easiest to do • Less multilingual support San Jose, California (IUC22)
A hybrid technique ("A" APIs on Win9x, "W" APIs on NT) • Most complicated to do • Best international support • Good leveraging of the best features of each platform San Jose, California (IUC22)
What the VB team actually did • Using COM • Porting the original VB • Working with the volume platform (Windows 95) San Jose, California (IUC22)
Where COM fits in • Benefits to VB by using COM • Benefits to COM by VB being a client San Jose, California (IUC22)
The birth of "UniMess" • An attempt to keep the conversion from VB3 to VB4 simple • From simplicity comes confusion San Jose, California (IUC22)
The cousin of UniMess:Using LCIDs for code pages • COM's biggest drawback • Once again, simplicity causes problems San Jose, California (IUC22)
Beyond UniMess • Intrinsic function woes • Source file encoding compatibility • Trouble with the Ruby forms package • Difficulties with API calls • Problems with file i/o San Jose, California (IUC22)
The verdict for VB4? San Jose, California (IUC22)
Changes in VB5 • Minor functionality enhancements • No major changes for Unicode support • Some work with the StrConv function San Jose, California (IUC22)
Changes in VB6 • More work with StrConv • A lot of VB-specific code moved to COM • A lot of other VB-specific functionality now using existing COM methods San Jose, California (IUC22)
And then came VB.NET • System.Text • System.Globalization • System.Resources • The [Unicode] Visual Studio IDE • [Mostly] Unicode controls in WinForms San Jose, California (IUC22)
Lessons learned • Was VB4 a good Unicode integration? • Were VB5 and VB6 good integrations? • What about VB.NET? San Jose, California (IUC22)
Summary of lessons learned • Backwards compatibility is crucial • Conversion between Unicode and other encodings is crucial • New data types need new constructs • Understand why you are supporting Unicode (the primary reasons for that support) • Know what supplementary benefits you will gain from Unicode San Jose, California (IUC22)
Questions? San Jose, California (IUC22)
A Case Study on Unicode Integration: Microsoft Visual Basic, v 3.0 to v. 7.0 San Jose, California (IUC22)