_____________________________________
ULTIMATE TV: DO WHAT YOU GOTTA DO AND STILL WATCH WHAT YOU WANNA WATCH
Been wondering what's the big deal about Ultimate TV? With Microsoft Ultimate
TV you can digitally record and store up to 35 hours+ of TV with the touch of a
button, watch or record two live shows at the same time++ and surf the web! Find
out why Walt Mossberg of The Wall Street Journal says, "I'm Ultimate TV's
biggest fan!"
<http://www.microsoft.com/insider/mi/ulttv.htm>
_____________________________________
GET READY FOR THE NEW WINDOWS EXPERIENCE!
With the Windows XP(r) Preview Program you'll see how you can do more with
your computer! Windows XP is smarter, yet simplified. You can easily find what
you're looking for, share your computer, and keep your computer up-to-date, all
in a new design that works the way you do. (The Windows team has posted lots of
new information, including images of this all new design).
<http://www.microsoft.com/insider/mi/winxppre.htm>
MICROSOFT READER WITH CLEARTYPE
More and more publishers are creating Microsoft Reader eBooks every day. On
the Reader website you can see the latest books and download Microsoft Reader
with ClearType(tm) display technology FREE today.
<http://www.microsoft.com/insider/mi/reader.htm>
_____________________________________
EIGHTY-FOUR TIPS TO BOOST THE POWER OF WINDOWS ME
Use these handy tricks to make your computer faster, easier, and more fun.
Activate hovering mode, adjust multimedia options, set accessibility options for
the keyboard or mouse, and much more.
<http://www.microsoft.com/insider/mi/winmetips.htm>
_____________________________________
MORE HOW-TO ARTICLES
E-MAIL ALL THE ELEMENTS OF A WEB PAGE AS A SINGLE ATTACHMENT IN OFFICE 2000
Save a Web page and all of its supporting files as one file, and send it as a
single attachment in an e-mail message.
<http://www.microsoft.com/insider/articles/sinato2.htm>
WINDOWS 98: GET TO KNOW AN OLD STANDARD
There's more to the familiar Windows "Save As" dialog box. than you
think
<http://www.microsoft.com/insider/mi/windowsdialog.htm>
----------------------
NEW SECURITY BULLETINS
----------------------
Erroneous VeriSign-Issued Digital Certificates Pose Spoofing Hazard
<http://www.microsoft.com/technet/security/bulletin/MS01-017.asp>
-------------------------------
SUPPORT NEWS
-------------------------------
How to Close All Files Opened by Network Clients from the Command Line
(Q290585)
<http://www.microsoft.com/technet/support/kb.asp?ID=290585>
SQL SERVER UPDATE TIP OF THE WEEK
This SQL Server tip is brought to you by SQL Server Magaine UPDATE, the FREE
e-mail newsletter that delivers relevant and timely SQL Server tips and new
product information once a week -- right to your desktop! To subscribe, go to
<http://www.win2000mag.net/Email/Index.cfm?code=00inxtnf&id=2>
--12 ways to have more fun with Windows Me
Windows Me is a great way to work and play with your computer at home. Check
out a cool dozen ways to make the experience even better.
<http://www.microsoft.com/windowsme/using/fun/tips/default.asp>
--New to computing? Start with the basics
Everyone starts somewhere. Why not start here? We've gathered 15 links to
useful information about starting with e-mail, accessing the Internet, using
your browser, and more.
<http://www.microsoft.com/windowsme/using/basics/default.asp>
--10 top reasons to step up to Windows Me now
Windows Me makes sense for you at least 10 different ways: It's a new way to
organize your home movies. It's got what you need to move your photos from a
shoebox to the Web. And that's just the start. The list goes on here.
<http://www.microsoft.com/windowsme/upgrade/upgradewhy.asp>
--Look for solutions to Windows Me problems here
Our Support page provides links to solutions and troubleshooting tips for
setup issues with Windows Me and more. You'll find the most common problems and
information about how to deal with them here, updated weekly.
<http://www.microsoft.com/windowsme/support/default.asp>
--Can you handle the truth about Xbox?
At the new Xbox site, the truth is revealed. Find out all about the console
itself as well as all the new Xbox games. Plus, act quickly and sign up to
become an Xbox playtester. With truth like this, who needs rumors?
<http://www.xbox.com/home.htm>
PRODUCT AND TECHNOLOGY NEWS
* Visual Studio.NET Open Tools Platform
A set of three core technologies that enable developers to use Visual
Studio.NET as a complete platform for developing and customizing next-generation
Web Services and applications. It is designed to facilitate productivity,
flexibility, and tight integration, which gives customers a more complete set of
solutions tailored to their specific needs.
<http://msdn.microsoft.com/vstudio/vsip/default.asp>
NEW ON MSDN ONLINE
* Scripting Clinic: Scripting the Experience with Microsoft Office Developer
<http://msdn.microsoft.com/voices/scripting03122001.asp>
* Working with C#: Open the Box! Quick!
<http://msdn.microsoft.com/voices/csharp03152001.asp>
MSDN LIBRARY AND WEB WORKSHOP
* Microsoft Inductive User Interface Guidelines
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/IUIGuidelines.htm>
* Bitmaps in Microsoft SQL Server 2000
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/SQLbitmaps.htm>
* Cartoon Rendering in DirectX 8 Using Vertex Shaders
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/DXVertex.htm>
* Duwamish Online Deployment
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/d5deployroot.htm>
* Duwamish Online Development
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/d5devroot.htm>
* Duwamish Online Using the XML Features of SQL Server 2000
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/d5sqlxmlroot.htm>
FEATURED DOWNLOADS
* Soap Toolkit 2.0 Beta 2
<http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/580/msdncompositedoc.xml>
THIRD-PARTY TRAINING AND RESOURCES
* Mainsoft Visual MainWin
This allows you to create native UNIX applications from Windows source code.
Develop applications in Microsoft's Visual Studio environment, then launch a
UNIX build with a click of your mouse. Get a free evaluation download available
for a limited time.
<http://www.mainsoft.com/products/mainwin.html?msdnflash>
SUPPORT
* Visual Studio 6.0 Service Pack 5
<http://msdn.microsoft.com/vstudio/sp/vs6sp5/default.asp>
* HOWTO: Log On to Terminal Server Session Programmatically from VB
<http://support.microsoft.com/support/kb/articles/Q281/4/17.ASP?LN=EN-US&SD=msdn&FR=0&qry=Q281417>
* HOWTO: Dynamically Populate a Group Data Report in Visual Basic
<http://support.microsoft.com/support/kb/articles/Q289/7/93.ASP?LN=EN-US&SD=msdn&FR=0>
WEBCAST
* Support WebCast: Microsoft Visual C++ for Beginners
April 10, 10:00 A.M. Pacific time
<http://support.microsoft.com/support/default.asp?PR=webcst&FR=0&SD=MSDN&LN=EN-US&CT=SD&SE=NONA>
IT & DEVELOPER CORNER
------------------------------------------------------------------
DOWNLOAD THE OFFICE XP PRODUCT GUIDE
Get a sneak preview of the new and improved features of Office XP by
downloading the Office XP Product Guide. Learn about Smart Tags, Task Panes, and
document recovery features in this preview -- now available online at:
<http://www.microsoft.com/office/xpguide.htm>
SMART TAG SOFTWARE DEVELOPMENT KIT
Smart Tags, an exciting new feature in Office XP, are buttons that appear
when the user needs them (such as when Word automatically corrects a user's
action, or when a user pastes some data) and give the user the options to change
the given action or error. The Smart Tag software development kit (SDK) includes
a tutorial, programmer's guide, application programming interface (API)
reference, registry key reference and sample code to help software developers
quickly and easily build Smart Tags. This SDK is free* and available now at:
<http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/562/msdncompositedoc.xml>
NEW ON .NET
* Customizing Visual Studio.NET: New Ways to Automate and Integrate
This addresses the fundamental need by providing a comprehensive programming
interface that enables developers to customize the look and feel of the
environment, enhance and extend its functionality, automate repetitive tasks,
and integrate Visual Studio.NET with other applications, such as Microsoft
Office.
<http://msdn.microsoft.com/vstudio/nextgen/technology/programmability.asp>
* Microsoft Visual Basic.NET: The Transition from Visual Basic 6.0
This was built from the ground up on the .NET Framework to enable you to
easily create next-generation applications for the Microsoft Windows operating
system and the Web. It also details some of the changes from Visual Basic 6.0 to
Visual Basic.NET, and explains how the Visual Basic.NET Upgrade Wizard can help
you upgrade your existing applications to Visual Basic.NET.
<http://msdn.microsoft.com/vbasic/technical/upgrade/default.asp>
NEW ON MSDN ONLINE
* Extreme XML: A Practical Comparison of XSLT and ASP.NET
<http://msdn.microsoft.com/voices/xml02192001.asp>
* Nothin' but ASP.NET: Web Services with ASP.NET
<http://msdn.microsoft.com/voices/asp02222001.asp>
* Driving DirectX: Using Vertex Shaders: Part 1
<http://msdn.microsoft.com/voices/directx02192001.asp>
* At Your Service: Authentication and Authorization
<http://msdn.microsoft.com/voices/service02282001.asp>
* Diving into Data Access: ADO Rocks and Rolls in .NET Applications
<http://msdn.microsoft.com/voices/data02222001.asp>
KNOWLEDGE BASE ARTICLES
* HOWTO: Merge Data in Two XML Documents by Programming the DOM
<http://support.microsoft.com/support/kb/articles/q286/8/17.ASP?LN=EN-US&SD=msdn&FR=0>
* INFO: The Digital Dashboard Resource Kit (DDRK)
<http://support.microsoft.com/support/kb/articles/Q286/3/78.ASP?LN=EN-US&SD=msdn&FR=0>
The VISUAL BASIC DEVELOPER monthly newsletter!
<http://www.pinnaclepublishing.com/vb>
All of these MLs (XML, HTML, etc.) actually sprung from
one place. What was the original "ML"? (And, no, I don't
mean the weirdly fascinating programming language called
ML --
<http://foxnet.cs.cmu.edu/sml.html>
.)
The gateway to information on VSA is at
<http://msdn.microsoft.com/vstudio/vsa/default.asp>
, the
FAQ is at
<http://msdn.microsoft.com/vstudio/vsa/qa.asp>
, and
<http://msdn.microsoft.com/workshop/languages/clinic/scripting01162001.asp>
is the place to go for an overview. You can download the
in-depth view at
<http://msdn.microsoft.com/vstudio/vsa/indepth.asp>
.
DirectX isn't directly related to .NET, but it's fun to
look at. See the latest version of the FAQ at
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/DirectX8faq.htm>
.
The announcement for ASP+ Connections is at
<http://www.devconnections.com/asp>
. The announcement of
The latest version of the SOAP toolkit may be found at
<http://msdn.microsoft.com/code/sample.asp?url=/MSDN-FILES/027/001/529/msdncompositedoc.xml>
Visual Basic Developer: Solutions for Microsoft Visual Basic
Developers, Volume 3
<http://www.p-ad.net/ads.nsf/c!open&EM1A54-010409-SSPW>
The URL that I want to suggest that everyone look at is
the brilliant analysis by Jim Farley that compares .NET
to Enterprise Java Beans. Totally even-handed, sure to
bother both parties, and (I think) right on target!
<http://www.sdmagazine.com/articles/2001/0103/0103a/0103a.htm>
A nice general coverage of .NET may be found at the Feb.
21 issue of Microsoft's "The Show."
<http://msdn.microsoft.com/theshow/>
A nice article by Dino Esposito on how to use legacy ADO
code in .NET.
<http://msdn.microsoft.com/library/default.asp?URL=/library/welcome/dsmsdn/data02222001.htm>
<http://msdn.microsoft.com/voices/csharp02152001.asp>
is a
nice article by Eric Gunnerson (author of "A Programmer's
Introduction to C#" from Apress) on boxing and unboxing -
- which is C#-speak for one of the nice improvements over
Java that C# has -- the ability to have value types
automatically be treated as objects.
<http://msdn.microsoft.com/voices/asp02222001.asp>
is an
excellent article on Web Services with ADO.NET by Rob
Howard, who is on the ASP.NET team. Curiously, it begins
with almost the exact same formal definition of what a
Web Service is: " A Web Service is programmable
application logic accessible via standard Web protocols."
What is deterministic finalization, and why are VB
developers very concerned about it?
Deterministic finalization is the name given to the
guarantee that a terminate event will be called
immediately in VB6 when you have removed all references
to an object you created. In VB.NET, you have no
guarantee when and how this will occur, so you must
manually call a method to clean up resources such as file
handles that are not reclaimed by the .NET runtime. (More
on this in the next issue!)
POINTS OF INTEREST
* IBM's XSLERATOR TOOL FOR XSLT SCRIPT GENERATION
The Java Application Development group at IBM's
alphaWorks laboratory has released an XSLerator (XSL
accelerator) tool, which "generates XSLT scripts from
mappings defined using a visual interface."
The XSLerator tool supports mappings with extended
conversion functions including iterations, conditions,
joins, variables, and XPATH functions.
XSLerator can be used in e-business solutions development
including B2B, B2C, and Web services. For example, it can
be used to integrate and correlate diverse data sources
to one unified data, or it can be used to transform data
from one business's format to another business's format.
Read the whole story at:
<http://xml.coverpages.org/ni2001-03-23-b.html>
XML TIDBIT
* XML KICK START TUTORIAL
In this tutorial, you'll learn what XML is all about. It
explains the basic XML syntax, and it will help you to
understand what's needed to make XML usable.
You won't be an XML expert after this lesson, but you'll
understand the basics of XML, XML Documents, and most XML
DTD's.
Learn more at
<http://www.spiderpro.com/bu/buxmlm001.html>
THIS ISSUE'S URLs
* XML TIMES
This site offers some great content, latest news, and
even a few tips you might want to use.
<http://www.xmltimes.com>
XML 10-SECOND TUTORIAL
* MOVING DOM NODES
In this short tip by Brett McLaughlin, he takes a look at
a common exception that occurs when you attempt to move
DOM nodes.
He explains the causes of this exception and, most
important, how to avoid it when doing DOM programming.
Check it out at
<http://www-106.ibm.com/developerworks/library/x-tipmvdom.html?n-x-3151>
FREE Visual Basic Online Training!
Start your VB training NOW get FREE Microsoft Visual Basic training from
KnowledgeNet! Now is your chance to try it before you buy it!
REGISTER FOR YOUR FREE GUEST ACCESS TODAY!
Hurry! This sample of FREE classes is only available for a limited time!
www.knowledgenet.com/lp/gst.jsp?sc=ns-gst-srchvbmsc-0201 <http://www.knowledgenet.com/lp/gst.jsp?sc=ns-gst-srchvbmsc-0201>
"Microsoft fills in Web services picture"
If you're a developer, you may be wondering how Microsoft plans to lure you
into its .Net. One way is via eBay. Under the new MS/eBay alliance, eBay's
commerce-engine platform (to which developers can write) will becomes a .Net
service available to the .Net development community.
SOURCE: CNET
<http://news.cnet.com/news/0-1007-200-5111426.html?tag=owv>
"Quick Takes: That's a wrap"
The VB-PowerWrap -- now that's a wrap! But it's just the beginning of the
truckload of products we've gotten wind of here at searchVB. Check out what's
new in this week's Quick Takes.
SOURCE: searchVB
<http://www.searchvb.com/searchVB_Original_Content_Item/0,3359,530818,00.html>
"Nastier version of backdoor tool released"
Watch your back door! A new version of SubSeven, a notoriously powerful
backdoor program that gives attackers almost complete control over a victim's
computer, is cruising the Net. As soon as this devil possesses an infected
computer, the software copies itself to the Windows directory with the original
name of the file from which it was run. It then unpacks a DLL to the Windows
system directory and edits the Windows Registry so that SubSeven will run every
time Windows boots up.
SOURCE: eWEEK
<http://www.zdnet.com/eweek/stories/general/0,11011,2695851,00.html>
A Visual Basic 6 Programmer's Toolkit
By: Hank Marquis and Eric Smith
This book offers readers a pragmatic approach to identifying,
addressing, and solving common problems. It focuses on the day-to-day
practical issues Visual Basic programmers face. In addition, this book
and accompanying CD-ROM are rich with source code.
For more info or to order this book, go to:
<http://www.digitalguru.com/dgstore/product.asp?sku=1893115062&dept%5Fid=251&ac%5Fid=71>
NEW BEST VB WEB LINKS CATEGORY
We've added a new main category to the Best VB Web Links called
"Extensible Markup Language (XML)" containing approximately 100
subcategories for XML that will include several hundred new XML links
for you. Check it out at:
<http://searchvb.techtarget.com/searchVB_Editors_Picks_Page/0,1947,285965,00.html>
NEW VB TIPS & TRICKS
Write text to multiple Excel worksheets
Member Erik Greene shares the results of many hours of head scratching
over how to deal with Excel from VB. Check it out at:
<http://searchvb.techtarget.com/Tips/searchVB_Tips_Single_Listing_Page/1,286485,531213,00.html>
SEARCHVB.COM'S QUICK TAKES
That's a wrap
By: Ed Parry, News Editor
The VB-PowerWrap is just the beginning of the truckload of products
we've gotten wind of here at SearchVB.com.
Check out what's new in this week's Quick Takes.
<http://www.searchVB.com/searchVB_Original_Content_Item/0,3359,530818,00.html>
ENHANCED SEARCHVB.COM CAREER CENTER
We've just upgraded our job search features to better serve your career
planning needs. Click on the link below to learn more:
<http://searchvb.techtarget.com/Career_Center/searchVB_Career_Center_Page/0,281827,,00.html>
"Microsoft set to release Windows XP Beta 2"
Paul Thurrott is downwind of more news whiffs from Redmond. He says Microsoft
will send Windows XP Beta 2 out the door today (Wednesday). It's been cooking a
little longer than anticipated, but folks in Redmond believe this is the
"little beta that could" and will be worth the wait -- the biggest
release since Windows 95.
SOURCE: Windows 2000 Magazine
<http://www.wininformant.com/Articles/Index.cfm?ArticleID=20363>
"Quick Takes: Just parsing through"
A new product to parse through Office documents fronts this week's Quick
Takes. There are also enough controls, components and tools to choke a virtual
VB horse, so click on over and check out what's new.
SOURCE: searchVB
<http://www.searchvb.com/searchVB_Original_Content_Item/0,3359,533649,00.html>
"Microsoft supports ebXML"
Microsoft has been caught -- showing support for the ebXML initiative.
Microsoft's senior program manager of XML technologies said he worked with ebXML
at a recent proof-of-concept to demonstrate how SOAP fits into ebXML's messaging
model. Right now, though, there is no plan to create an ebXML adapter in
Microsoft's SOAP-based BizTalk integration server, although that could change if
customers want it badly enough.
SOURCE: CRN
<http://www.crn.com/sections/BreakingNews/dailyarchives.asp?ArticleID=24993>
"WSDL spec. sent to W3C"
What the queen is to English, you could say Microsoft is to XML. Redmond has
turned in the Web Services Description Language to the World Wide Web Consortium
for review. WSDL provides a grammar for XML, enabling computer-to-computer
transactions via the Web. This specification is a crucial piece of the .Net
puzzle.
SOURCE: ENT Magazine
<http://www.entmag.com/breaknews.asp?ID=4253>
"Microsoft says .Net helps enable e-government"
Who said Microsoft and Uncle Sam can't be buddies? A company executive said
the .Net initiative will help put the "e" in e-government and allow
government workers to interact with constituents, each other, and with suppliers
and trading partners.
SOURCE: CRN
<http://www.crn.com/Sections/BreakingNews/BreakingNews.asp?ArticleID=25023>
"Microsoft appears set to make a .Net Linux overture"
Redmond may open its arms to the penguin this week and announce that it
(Microsoft) is opening a bedroom to Linux in the .Net house. However, given the
fact that Microsoft views Linux as its number one threat, analysts doubt the
company will truly support the open-source platform.
SOURCE: ComputerWorld
<http://www.computerworld.com/cwi/stories/0,1199,NAV47-68-84-88_STO58741,00.html>
"Kournikova virus kit author quits"
It's quittin' time for the Brazilian behind the kit that begat the Anna
Kournikova virus. {K}alamar said he's afraid to fight the law, because the law
might win, so he's yanking the Vbswg kit from his Web site and ceasing
development. He does say, however, that he might release the source code, which
could open a fresh can of worms.
SOURCE: vnunet
<http://www.vnunet.com/News/1119441>
"New virus is deadly, but is it worth the worry?"
The Magistr virus -- too rare to care? Some antivirus vendors say "be
very afraid" because the virus can overwrite hard disks and erase CMOS
memory. But other security firms aren't so bugged -- they say Magistr is so
rare, there's little to fear. Magistr arrives on a system in an infected Windows
executable file then infects files on both the host PC and others on a LAN.
SOURCE: TechWeb
<http://www.techweb.com/wire/story/TWB20010315S0015>
A look at an off-the-wall story off the Web
"Freewheeling work atmosphere not likely to fade away"
Don't say foosball has contributed to the fall of the dot-com. In fact, the
shakeout survivors are insisting on some casual form of 9-to-5 cavorting.
Proponents of a casual work atmosphere say table soccer, ping-pong and computer
games foster a sense of company loyalty and provide a relaxed forum for
brainstorming and communication in general. An occasional break, they add, makes
up for the high, creative expectations placed upon dot-commers, not to mention
the long hours. So, play on!!
SOURCE: Knight Ridder
<http://www.siliconvalley.com/docs/news/tech/012752.htm>
<http://support.microsoft.com/directory/discontinue.asp>
?
For example, Visual Basic for MS DOS, Visual Basic 1.0,
2.0, and 3.0 were officially deemed obsolete as of July
1, 1999.
* that Microsoft maintains a decent Windows 2000 tip site
at
<http://www.microsoft.com/WINDOWS2000/techenthusiast/tricks>
,
and that one of its best points are links, such as this
one with an alphabetical list to Web resources mentioned
in the Windows 2000 8-volume Resource Kit:
<http://www.microsoft.com/windows2000/library/resources/reskit/WebResources/default.asp>
?
Another link,
<http://www.microsoft.com/windows2000/library/resources/reskit/ErrorandEventMessages/default.asp>
,
will help you decipher "most of the error and event
messages generated by Windows 2000."
* that, speaking of Windows 2000, you can find out how to
make a Bootable Windows 2000 CD with Service Pack
Integrated at
<http://www.bink.nu/Bootcd/default.htm>
? As
author Steven Bink explains, service packs in Windows
2000 have a new feature called slipstream that integrates
SPs into the original installation folder (i386). That
means that when you install a computer with a fresh copy
of Windows 2000, it will be directly at the SP level.
Although this works great if you have an installation
folder shared on the network, if you want to use a CD-R
you made with the integrated i386 on it, the CD won't
boot. Recommended by Darwin Sanoy, the eminence grise
behind Desktop Engineer's Junk Drawer at
<http://desktopengineer.com>
/.
* that there's a really good XML chart that compares
various protocols at
<http://www.w3.org/2000/03/29-XML-protocol-matrix>
? (Thanks
to last issue's guest editor, John Mueller, for the
sighting.)
* that there are some really good articles about ASP.NET
that can help you decipher that new technology at
<http://www.aspnextgen.com/tutorials.aspx>
?
* that you can point VB API beginners to Q190000 - HOWTO:
Get Started Programming With the Windows API? Of course,
that should only whet their appetite for the entrée: VBD
columnist Dan Appleman's classic "Dan Appleman's Visual
Basic Programmer's Guide to the Win32 API" and his
playfully clever "Dan Appleman's Win32 API Puzzle Book
and Tutorial for Visual Basic Programmers."
* that you can read Peter McMahon's interesting article
on "Writing a Search Engine using XML and ASP" at
<http://www.asptoday.com/articles/20000530.htm>
?
Finalizers
Adapted from Dan Appleman's forthcoming book, "Moving to
VB.NET: Strategy, Concepts, and Code."
Few areas better illustrate how different VB.NET is from
VB6 than the finalization issue. VB6 programmers who have
studied good object-oriented programming techniques know
the "right" way to initialize and terminate components.
During the class Initialize event, you initialize members
and often allocate any necessary system resources. During
a class Terminate event, you perform any necessary
cleanup operation. The Terminate event occurs immediately
when the last reference to an object is released, so you
can generally assume that any object variables are valid
during the Terminate event. You can certainly count on
the Terminate event taking place, ensuring that you can
clean up after your application (free system resources,
close files, etc.) when your application terminates.
Objects with finalizers aren't destroyed when garbage
collection occurs. The objects remain in the finalizer
heap until a separate background thread runs the
finalizers. After the finalizer is run, the object is
removed from the finalizer list and will finally be freed
during the next garbage collection cycle. (Objects with
finalizers have to be collected twice -- first when the
object is added to the finalizer list, and then when the
memory is actually reclaimed.) How long does it take from
the time you stop referencing an object until the time
the finalizer runs? You don't know.
VB6 (and COM objects in general) provides deterministic
finalization -- you always know that finalizers will be
called, and you know when they'll be called. However, the
CLR doesn't support deterministic finalization. There's
no way to know when a finalizer will be called or, in
some situations, even if it will be called.
Some VB programmers object strongly to this change and
have criticized Microsoft for leaving deterministic
finalization out of VB.NET. Personally, I think the
benefits of garbage collection are worth the loss of
deterministic finalization.
But there's no doubt that this change does alter the way
you should write objects in VB.NET.
* Dino Esposito's "ADO Rocks and Rolls in .NET
Applications" at
<http://msdn.microsoft.com/voices/data02222001.asp>
Quote: "From the point of view of a .NET application, all
of the ADO code you have is legacy. In fact, to
accomplish data handling in .NET, you are supposed to use
the new ADO.NET classes. If you cut and paste an existing
VB or ASP application using ADO objects and save it as a
.NET equivalent application, be prepared to face an
inevitable long list of errors."
* Read Michael Reeves' November 2000 9-page article on
XML and Windows CE 3.0.
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/Xml_ce.htm>
* Read a 32-page July 2000 article on Writing Your Own
SNMP (Simple Network Management Protocol) Management
Information Base for Microsoft Windows CE 3.0.
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/snmpmib.htm>
* Q259725 - PRB: Error Occurs When You Debug a COM+
Component Under the Visual Basic IDE with an ASP Client
(Windows 2000)
<http://www.microsoft.com/technet/support/kb.asp?ID=259725>
* Q275685 - INF: Importing Performance Monitor Logs into
SQL Server
<http://www.microsoft.com/technet/support/kb.asp?ID=275685>
* Q132385 - OrgChart: How to Add More Than Four Lines to
an Org Chart Box (Microsoft Office)
<http://www.microsoft.com/technet/support/kb.asp?ID=132385>
* Q251125 - HOWTO: Use the Rule.dll Sample to Create an
Inbox Rule from Visual Basic
<http://www.microsoft.com/technet/support/kb.asp?ID=251125>
* Q283857 - HOWTO: Install a Visual Studio 6.0 Stand-
Alone Product
<http://www.microsoft.com/technet/support/kb.asp?ID=283857>
* Q265771 - HOWTO: Access Pocket Outlook Objects from
eMbedded Visual Basic and VBCE
<http://www.microsoft.com/technet/support/kb.asp?ID=265771>
* Q286189 - HOWTO: Invoke the OLE DB Data Link Properties
Dialog Box in Visual Basic Code
<http://www.microsoft.com/technet/support/kb.asp?ID=286189>
* Q276556 - HOWTO: Launch Device-Side Applications at
System Events
<http://www.microsoft.com/technet/support/kb.asp?ID=276556>
* Q251009 - INFO: Where to Find the MMC Snap-In Designer
for Visual Basic
<http://www.microsoft.com/technet/support/kb.asp?ID=251009>
* Q274484 - HOWTO: Grant Users the Access to Add Visual
Basic Components
<http://www.microsoft.com/technet/support/kb.asp?ID=274484>
* Q280513 - PRB: Visual Basic 6.0 Application Generates
Run-Time Error 3633 When It Is Run on a New Computer
<http://www.microsoft.com/technet/support/kb.asp?ID=280513>
* Q282233 - BUG: Permission Denied Error Message When You
Try to Recompile a Visual Basic Project with a Public UDT
and Binary Compatibility
<http://www.microsoft.com/technet/support/kb.asp?ID=282233>
* Q286241 - PRB: Error Message When You Save a NULL Value
with ADODC and Bound Controls
<http://www.microsoft.com/technet/support/kb.asp?ID=286241>
* Q286755 - How to Create an Index on a Custom Property
<http://www.microsoft.com/technet/support/kb.asp?ID=286755>
* Q286754 - PRB: Three-Tiered Service Model Is Not
Visible in Visual Modeler (remember, VM is in .NET, too)
<http://www.microsoft.com/technet/support/kb.asp?ID=286754>
* Q257773 - INFO: Support for Third-Party Installers
<http://www.microsoft.com/technet/support/kb.asp?ID=257773>
* Q257947 - PRB: Runtime Error 7: Out of Memory Error
Message Occurs When BoundText
<http://www.microsoft.com/technet/support/kb.asp?ID=257947>
* Q286504 - eVB CreateObject Function Causes Memory Leak
<http://www.microsoft.com/technet/support/kb.asp?ID=286504>
NIST (US National Institute of Standards and Testing) set
of statistical tests for randomness (as in random and
pseudo-random number generators). Great links, too.
<http://csrc.nist.gov/rng>
. Related: NIST's Computer
Security Resource Center at
<http://csrc.nist.gov/publications>
.
If your users love Excel, or if you want to provide
database query results or other data in a format that can
be easily manipulated, then this technique is for you.
It's surprisingly easy to take any data you have and send
it to the client as an Excel spreadsheet. When the user
clicks on a link requesting the data, a dialog box comes
up asking whether they'd like to open or save the
document that's being sent. If they choose to open, Excel
opens with your data in it. If they choose to save, an
Excel spreadsheet file is saved on their hard drive.
How do you accomplish this magic? Well, on most computers
with Excel installed, CSVs (comma-separated values) are
associated with Excel. So all you have to do is tell the
browser that the file you're sending back is of type .CSV
and give it a filename. These two lines accomplish that
task:
Response.ContentType="application/csv"
Response.AddHeader "Content-Disposition", "filename=ReqData.csv;"
Now all you have to do is format your data in CSV, and
you're ready to go! For those of you who are a little
rusty on that front, CSV separates fields or columns with
commas and separates records or rows with a new line
character. To display the contents of three 10-element
arrays -- FirstName, LastName, and Phone -- it would look
something like this:
For i=1 To 10
Response.Write FirstName & "," & LastName &
"," & Phone
Response.Write vbNewLine
Next
You can use this technique with recordsets or virtually
any other data source.
Bonus tip: Excel comes with a moving average analysis
tool built in, but you have to install the Analysis
ToolPak.
Benford's Law
I recently read an allusion to Benford's Law. (It was
mentioned in an article about data mining to detect fraud
and cited Mark Nigrini's DATAS software, which he claims
is being run by 3 percent of the world's multinationals
to flag suspicious patterns. See
<http://www.jsrsys.com/fema/new15sys.htm>
for more on
DATAS). Benford's Law basically predicts how many times a
given digit appears at the beginning or end of numbers
within a data set. Useful links: Benford's Law and Zipf's
Law:
<http://www.cut-the-knot.com/do_you_know/zipfLaw.html>
,
Eric Weisstein's article at
<http://mathworld.wolfram.com/BenfordsLaw.html>
,
Kevin Brown's article at
<http://www.seanet.com/~ksbrown/kmath302.htm>
,
Mark Nigrini's discussion at
<http://www.fm.co.za/97/1010/toptail/letta.htm>
,
Malcolm Browne's discussion at
<http://courses.nus.edu.sg/course/mathelmr/080498sci-benford.htm>
,
and Robert Matthews' reflections at
<http://www.newscientist.com/ns/19990710/thepowerof.html>
.
You can also download an Excel macro developed by a US
Army auditor to analyze statistical, numerical sequences
from
<http://www.hqda.army.mil/AAAWEB/benford.htm>
and
listen to "Dr. Karl's" RealAudio audiocast about
Benford's Law at
<http://www.abc.net.au/science/k2/aboutkk.htm>
.
* that you can read a good article on "Polymorphism in
ASP.NET" by Ian Stallings at
<http://www.4guysfromrolla.com/webtech/022501-1.shtml>
?
* that there's a really good tutorial on using Windows
Forms controls in IE at
<http://www.gotdotnet.com/team/windowsforms/iesourcing.aspx>
?
* that Seagate Software has renamed itself Crystal
Decisions (
<http://www.crystaldecisions.net>
) and is
officially launching a new product, Crystal Enterprise,
and an updated version of Crystal Reports this week? CR
8.5 features PDF output and XML support.
* that you can find out about "VSAM Demystified" in a new
IBM Redbook at
<http://www.redbooks.ibm.com/abstracts/sg246105.html>
?
* that there's a good article by Roger Franklin on
preparing your site for WAP at
<http://newsletter.webreview.com/cgi-bin4/flo?y=eCng0BTSax0Pg0DkCn>
?
Marginally related: list of community wireless projects at
<http://www.seattlewireless.net/index.cgi/SimilarProjectLinks>
.
* that you can read notes from the Intel IDF Spring
conference (e.g., about the Itanium, the Pentium 4, DDR-
SDRAM, etc.) at
<http://www6.tomshardware.com/business/01q1/010228/index.html>
?
Related: current "Intel Developer Update" magazine with
articles about technology presented at IDF Spring 2001 at
<http://developer.intel.com/update>
.
* that James Shaw's CoverYourAsp site has a good article
with code to help you detect folks who bail out of your
Web site?
<http://coveryourasp.com/LostVisitors.asp>
* that you can read a new article by Peter McMahon (I
mentioned his "Writing a Search Engine Using XML and ASP"
in the last issue) on an Ad Rotator at
<http://www.asptoday.com>
?
10-SECOND TUTORIAL: .NET Security
Let's be honest -- headlines about hackers and viruses
don't inspire a lot of confidence in the "locked down"
nature of Windows, and I suspect that there's going to be
a lot of concern about increasing amounts of "mobile
code."
Mobile code is software that's transmitted across a
network from a remote source to a local system and is
then executed on that local system, often without
explicit action on the part of the user. The local system
is often a PC, but it can also be a smart device such as
a PDA, mobile phone, Internet appliance, etc. Mobile code
differs from traditional software in that it generally is
neither installed nor executed explicitly by the user.
ASP.NET leverages IIS's native support for common HTTP
authentication schemes (e.g., NTLM, Kerberos, and SSL/TLS
client certificates), but it also supports Microsoft
Passport authentication and provides a convenient
implementation of Forms-based (Cookie) authentication.
As the GotDotNet team explains at
<http://www.gotdotnet.com/team/clr/about_security.aspx>
,
ASP.NET supports traditional methods of performing access
control and also provides URL authorization. URL
authorization allows administrators to provide XML
configuration that allows or denies access to URLs based
on the current user or role. Developers can either code
explicit authorization checks or take advantage of the
CLR's support for declarative security to include control
access to methods based on the calling user or role.
Evidence-based security is the other (aside from role-
based security) basic approach to security that most
developers will need to understand. Evidence-based
security allows mobile code from untrusted sources to be
executed safely. Mobile code is assigned permissions
based on its origin (both location and publisher
signature, if available) and can only perform those
actions allowed by the permissions it receives. The user
is never required to make a trust decision (i.e., "Do you
want to run this code?"). The evidence-based security
system makes trust decisions for the user based on a
configurable policy system.
.NET security seems to be a work in progress, and not
just because .NET itself is (see the caveat about
preliminary documentation at
<http://msdn.microsoft.com/library/dotnet/cpguide/cpconhowaspnetsecurityworks.htm>
), but also because standards such as the proposed XML
Digital Signature specification (XMLDSIG) are themselves
still being developed.
I'd recommend you try to carve out a little time to track
the security side of .NET because I think it's going to
emerge as a key issue.
* Rob Howard's MSDN online column on "Web Services with
ASP.NET" shows you how to write a Web Service that
exposes Web application performance counters.
<http://msdn.microsoft.com/voices/asp02222001.asp>
* Ulrich Roxburgh's 22-page article describing "BizTalk
Orchestration: Transactions, Exceptions, and Debugging"
at
<http://msdn.microsoft.com/library/techart/BTSOrch.htm>
* Joseph Fultz's article on "BizTalk Messaging: Building
BizTalk Server Custom Parsers and Serializers" targets
the VC++ programmer.
<http://msdn.microsoft.com/library/techart/BuildBizTalkServerPS.htm>
* Developing an International Site
<http://msdn.microsoft.com/library/default.asp?URL=/library/techart/DevelopGlobal.htm>
* Dr. GUI.NET #3 on Arrays and Strings in the .NET
Framework
<http://msdn.microsoft.com/library/welcome/dsmsdn/drguinet02262001.htm>
* Vivek Jhaveri's MSDN Online article on "Whistler: Build
More Flexible Console Snap-ins with the MMC 2.0 Object
Model"
<http://msdn.microsoft.com/msdnmag/issues/01/03/mmc20/mmc20.asp>
* 13-page article by John A. Bocharov on "Contention
Analysis for Web Server Performance" using Duwamish
Online as an example
<http://msdn.microsoft.com/library/techart/d5casestudy.htm>
GotDotNet, DeveloperSites, and More
*
<http://www.gotdotnet.com>
. If you don't know this site
and are getting "into" .NET, check it out. It's run by
some of Microsoft's .NET team folks, and includes vetted
sample code from your peers in
<http://www.gotdotnet.com/userarea>
. Example downloads:
code for doing a treeview on a Web page at
<http://www.gotdotnet.com/userfiles/asills/treeview.zip>
.
*
<http://www.developersites.com>
. Matt Pomar maintains
this really good portal for developers.
*
<http://www.tutorialfind.com/tutorials>
. Plenty for
techies and geeks, but links to plenty of other tutorials
as well.
MZ-Tools 2.0, written by Madrid-based VB database guru
Carlos J. Quintero, with menu items like TabIndex
Assistant, Procedure Callers, Add (and Remove) Line
Numbers, Review Collections, Statistics, and so on from
<http://cquintero.tripod.com/mztools2_eng.htm>
or
<http://www.mztools.com>
? (Carlos explains that the MZ
comes from Mazinger-Z, a very popular Japanese cartoon in
Spain in the late '70s.)
* that you can download the code from VBD columnist Rod
Stephens' VB-Helper site for a cool program that prevents
a user from resizing another program? As Rod explains,
you find the handle of the target window using the
FindWindow API function or some other method, then use
the GetSystemMenu API function to get the form's system
menu, and finally use DeleteMenu to remove the Restore,
Size, Minimize, and Maximize menu items.
<http://www.vb-helper.com/whatsnew.htm>
.
Another recent howto shows how to use the ChooseColorA function to let
users select colors. And VBD subscribers will want to
read Rod's excellent Feb. column at
<http://www.pinnaclepublishing.com/VB>
on how to include a
progress bar during a file copy.
* that you can download Macromedia's Flash Player 4
Authoring Kit for Pocket PC from
<http://www.macromedia.com/software/flashplayer/pocketpc/authoring/contents.html#what_is>
?
* that you can find a list of all the KB articles about
SQL Server at
<ftp://ftp.microsoft.com/bussys/sql/kb/index.txt>
?
* that you can examine some code that creates VBS files
that will create an on-the-fly .EXE file and execute it
once the script runs? And that the information is
provided by the Beyond Security team which distributes an
open source firewall, SeaWall? According to the site's
Web page, "This doesn't pose a new security threat, nor
does it present any new vulnerability. However, it shows
how simple it is to create a VBS Trojan that can
compromise the system's security without being limited to
VB Script commands."
<http://www.securiteam.com/tools/Encapsulation_EXE_in_a_VB_Script__creation_tool_.html>
* that you can read a half dozen articles about SQL
Server and some book reviews about both SQL Server 7.0
and 2000 books at Brad McGehee's SQL Server site:
<http://www.sql-server-performance.com>
?
* that Oracle ODBC Drivers for Oracle 7 and Oracle 8i are
available for download (free registration required) at
<http://otn.oracle.com/software/utilities/htdocs/listing.htm>
?
10-SECOND TUTORIAL: Aggregates and Aggregations
Well, the term "aggregate" is a rich one. In some
circles, it refers to a kind of rock or concrete. In
economic circles, it refers to one of the formal
categories of money (as cash and demand deposits or bank
credits) in a national economy that is used as a measure
in predictions of economic growth.
In the SQL (structured query language) language, it
refers to any of several built-in functions such SUM,
AVG, MAX, MIN, and COUNT. (See
<http://www.willcam.com/sql/default.htm>
for a nice
tutorial on SQL.)
And in UML, you may run into aggregation relationships
that are a specialized form of association in which a
whole is related to its part(s). An aggregation is known
as a "part-of" or containment relationship, and the UML
notation for an aggregation relationship is an
association with a diamond next to the class denoting the
aggregate (whole).
Related: Download a freeware Visio template for creating
UML diagrams from
<http://www.objectmentor.com/freeware/browse.html>
xxx.lanl.gov and .NET Enhance Proj.
<http://xxx.lanl.gov>
.
arXiv.org e-Print (and pre-print)
archive for physics, math, non-linear sciences, and
computer science. A veritable treasure trove for anyone
interested in these disciplines. Funded by the US
National Science Foundation.
The .NET Enhance Project. This project will attempt to
coordinate efforts of .NET developers to produce a open,
solid and rich library of reusable source code that
(tentatively) conforms to OSD.
<http://www.sjoerd.org/projects/enhance/>
.NET Gotchas
Remember:
* In .NET, True is 1, not -1.
* Most of the classes in the .NET's CLR are NOT thread-
safe.
* Static methods belong to their class, not to a specific
object in the class. IOW, a static method can be called
without an object.
* In .NET, all arrays have a lower bound of 0.
* Caldera Systems' "Project 42" with the next Linux 2.4
kernel, a secure web server, a firewall configuration
tool, and the usual network services (DHCP, DNS, Samba,
etc.).
<http://www.calderasystems.com/products/beta/open/server.html>
* SOAP Toolkit 2.0 Beta 2
<http://msdn.microsoft.com/code/sample.asp?url=/msdn-files/027/001/580/msdncompositedoc.xml>
Read Robert Martin's 34-page PDF file on "Design
Principles and Design Patterns" at
<http://www.objectmentor.com/publications/Principles%20and%20Patterns.PDF>
According to XP advocate Martin, the four symptoms of
code rot are rigidity, fragility, immobility, and
viscosity. Sound familiar?
VB INTERVIEW WITH VB.NET
Q&A Interview with Denver VB.Net Special Interest Group (VB.Net SIG)
Author: Brent Sheets, Site Editor
This month, SearchVB.com speaks with Chris Wallace, group leader of the
Denver VB.Net SIG. Find out why our VB friends in the Centennial State
think it's important for developers to start focusing on Visual
Basic.Net now. For the full story, go to:
<http://searchvb.techtarget.com/qna/0,,sid8_gci535706,00.html>
Hacking time down to fractions
Want to really get down to instants? This tip from member Phil Lenoir
tells you how at:
<http://searchvb.techtarget.com/tip/1,289483,sid8_gci535495,00.html>
For the complete list of VB Tips & Tricks, go to:
<http://searchvb.techtarget.com/tipsIndex/0,289482,sid8_tax4f0_alpD_idx0,00.html>
Don't forget to give your rating to let us know what you think of the
value of the tips.
REAL-TIME SALARY SURVEY
Join other VB professionals who have taken the survey and add to the
industry's knowledge of how to best compensate employees.
All responses are anonymous.
Take the survey at:
<http://searchvb.techtarget.com/salarySurvey/0,,sid8_cid346245,00.html>
* The .NET Show: Microsoft.com
See why Tim Sinclair, Mike Moore, and Jay Nanduri are so excited about the
benefits that .NET provides them on the Microsoft.com Web site. They've added
some functionality and have even more ideas for the future.
<http://msdn.microsoft.com/theshow/>
* Microsoft BackOffice Server 2000
MSDN Universal subscribers will receive Microsoft BackOffice Server 2000, the
next version of the leading server suite for the Microsoft Windows 2000
operating system. This release integrates Windows 2000 Server and the latest
Standard versions of the component products, providing a wide range of
infrastructure and application services including directory, networking, Web
application, database, messaging and collaboration, Internet proxy and firewall,
host integration, and Windows desktop management.
<http://msdn.microsoft.com/subscriptions/resources/highlights.asp>
* Cartoon Rendering Using Vertex Shaders
<http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/002/256/msdncompositedoc.xml>
* C# Boxing Sample
<http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/002/254/msdncompositedoc.xml>
* Legacy File Integration Sample
<http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/002/253/msdncompositedoc.xml>
* Building Parsers and Serializers Sample
<http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/002/252/msdncompositedoc.xml>
* Diving Into Data Access: Meditating on OLE DB and .NET
<http://msdn.microsoft.com/voices/data03222001.asp>
* Extreme XML: XML Web Service-Enabled Office Documents
<http://msdn.microsoft.com/voices/xml03192001.asp>
* HOWTO: Use Visual Basic to Locate CD-ROM Drives
<http://support.microsoft.com/support/kb/articles/q291/5/75.asp?LN=EN-US&SD=msdn&FR=0>
* INFO: List of Issues Fixed in Microsoft XML 3.0 Service Pack 1
<http://support.microsoft.com/support/kb/articles/q292/9/35.asp?LN=EN-US&SD=msdn&FR=0>
* PUT XML.COM CONTENT ON YOUR PAGES
Ever wanted XML.com content on your own pages? Thanks to
some neat programming work from O'Reilly's Rael Dornfest,
you can use content from XML.com's RSS feed on your own
site. To find out how, read Rael's explanation at
<http://www.xml.com/pub/a/2001/03/21/xml_com_feed.html>
* USING XML::TWIG By Kip Hampton
In his article, Kip shows how XML::Twig provides a fast,
and memory-efficient way to handle large XML documents.
This is useful when the needs of your application make
using the SAX interface overly complex.
Read the whole story at:
<http://xml.com/pub/a/2001/03/21/xmltwig.html>
* OVERCOMMING OBJECTIONS TO XML-BASED AUTHORING SYSTEMS
In this article by Brian Bueling on XML.com, Brian talks
about the problems many developers have with convincing
their employers how and why XML is a good solution. This
is a great article that addresses many of the common
issues XML developers face on a day-to-day basis.
Check out the whole story:
<http://www.xml.com/pub/a/2001/03/21/xmlauthoring.html>
* DRE and XMI
DRE allows you to build an abstract document containing
text, lists, tables, pictures, etc., that can be rendered
into a number of formats. DRE currently supports PDF and
HTML formats.
Check out:
<http://alphaworks.ibm.com/tech/dre?open&322awhome>
* XMI Framework
The XMI Framework is a simple Java API for saving and
loading XMI files and creating XMI DTDs.
Read more at:
<http://alphaworks.ibm.com/tech/xmiframework?open&322awhome>
* IBM Developer Toolbox
A good site for XML Developers (formerly IBM's Developers
Connection)
More at:
<http://www.developer.ibm.com/devcon/titlepg.htm>
* XML PRIMER
A brief essay on the history of SOAP, from one of its
original inventors, Don Box. Don tracks the highs and
lows of SOAP since 1998, and tells us where it should go
next.
Read the article at:
<http://xml.com/pub/a/2001/04/04/soap.html>
Normally, the XML::Parser module will immediately
terminate when it finds mal-formed XML. This is, in fact,
the way XML parsers should behave. There are cases
however, where you may want to handle the error without
exiting the program. In these cases, you can enclose the
code that calls the parse() or parsefile() methods in an
eval block like:
eval { $p->parse($xml) };
or like:
eval { $p->parsefile($filename) };
If an error occurs, it puts the error message into the $@
variable. Below is a short script that parses an XML
file. It encloses the parsefile() method in an eval block
and then prints the error message if an error occurred.
use strict;
use XML::Parser;
my $p = new XML::Parser();
die "catch_error.pl \n" unless $ARGV[0] && -e $ARGV[0];
eval { $p->parsefile($ARGV[0]) };
print "Caught error: $@\n" if $@
print "Done.\n";
***
LIMITED-TIME OFFER FOR PINNACLE CUSTOMERS: Get a FREE
3-Month trial subscription to VISUAL BASIC DEVELOPER!
VISUAL BASIC DEVELOPER is written for professionals who
use VISUAL BASIC. Each issue, available in print and online,
offers insights and solutions on a range of Visual Basic
development topics. And its extensive online archive makes
24/7 access a click away.
Visit us now at:
<http://www.pinnaclepublishing.com/vb>
and
get a three-month trial subscription to VISUAL BASIC DEVELOPER
monthly newsletter absolutely free! Click on the "Free Print
Trial" button. (In the order code field, please type "DM1A07"
to receive this FREE trial.) Or call toll-free: 1-800-788-1900
or fax to 770-993-4323.
Originally I intended to devote some more time to
Hailstorm, but I'll be doing that in the next issues. The
hot news this week is that Microsoft has decided to make
a small number of changes to VB.NET to make it more
palatable to VB6 users. First, some background: VB.NET is
a great language, but it's only a "kissing cousin" of
earlier versions of VB. Semantically, it's the single
inheritance multiple interface language that uses BASIC-
like syntax. This means it does good things like having
explicit delimiters for control structures avoiding
braces, and it ignores case (something I applaud, as code
like "this.X = x" makes me see red). Microsoft made most
of these changes for reasons that seem perfectly good to
me. That said, essentially no serious VB6 program has a
hope of running in VB.NET, and the upgrade tool can't be
taken seriously since such tools can't deal with
semantics, only syntax. The VB6 community is certainly
divided, and feelings run hot (see the URLs section for
some places to go).
Here, directly from Ari Bixhorn, VB Product Manager, is a
list of the current changes in VB.NET from Beta 1:
1. The value of True -- When Visual Basic developers
coerce "True" into a numeric value, the value they
receive will be -1 (as VB has always done), not 1. This
applies to both explicit conversions, using CInt(),
CDec(), etc., as well as implicit conversions:
Dim b As Boolean = True
Dim i As Integer = b ' i = -1
It is important to note that when a Boolean in VB is
passed to the .NET Framework or to another .NET language,
it will be treated as 1 to maintain interoperability
between languages. This change offers the best of both
worlds -- VB developers get expected behavior when
working within VB, and developers working with multiple
.NET languages get seamless behavior across languages.
2. Behavior of And/Or/Not/XOr -- The functionality of
these operators will be returned to bitwise operations
instead of purely logical (meaning they will work as they
always have in VB). As a result, there is no need to keep
the BitAnd, BitOr, and BitNot operators that were planned
for VB.NET. In addition, the operator precedence will be
restored to these operators as it was in Visual Basic 6.
Finally, these operators will not short-circuit. Instead,
to enable developers to show explicit intent in their
code, we will introduce two new operators, "AndAlso" and
"OrElse," that will provide short-circuiting behavior.
This request was consistent with our initial usability
findings on short-circuiting "And" and "Or," which
resulted in bugs that were hard for VB devs to track
down. Again, these changes provide consistency with VB6
without sacrificing functionality in VB.NET.
3. The declaration of Arrays -- When arrays are declared
in Visual Basic.NET, they will be declared by specifying
the upper bound (as has always been the case in VB), not
the size.
Dim a(5) As Integer ' produces a 6 element array, 0 through 5
Do any of these changes break language interoperability
with other .NET languages or the Framework? No.
Will these changes delay the ship of Visual Studio.NET?
No. The changes are currently being implemented and will
be part of Beta 2 (due out this summer). From the start,
we had planned for feedback during the beta program and
had expected to make changes like these prior to
releasing the product. If anything, these changes are a
testament to the success of the beta program -- we've
spoken to literally thousands of VB programmers around
the world who are engaged in the beta program and who
want these changes made.
Are these *major* changes to the language? No. Will they
keep VB.NET developers from taking advantage of the .NET
Framework, Web Services, ASP.NET, cross-language
inheritance and debugging, etc., etc., etc.? No, but they
do provide benefits to the existing VB developer base who
are either upgrading existing code to VB.NET, or who will
be maintaining both VB6 and VB.NET code bases.
Finally, I think it's important to call out the
difference between wanting cross-language
interoperability and cross-language consistency. Interop
is what we're really looking for with .NET -- the ability
to pass information between languages without confusion -
- and with these changes, we'll still have seamless
language interop. At the same time, these changes will
make the knowledge upgrade easier for VB developers.
Language consistency, on the other hand, implies that
there is a *right* way and a *wrong* way to declare
arrays, coerce the value of True, etc. Neither C++ nor VB
are "wrong." They are simply different.
* Ted Pattison's two articles in MSDN magazine are a good
place to go for VB.NET Information:
<http://msdn.microsoft.com/msdnmag/issues/01/02/vbnet/vbnet.asp>
.
The second article from the May issue should be up
shortly. (The MSDN magazine home page is at
<http://msdn.microsoft.com/msdnmag/default.asp>
.)
* Dr Gui's article on MSDN
(
<http://msdn.microsoft.com/library/default.asp?URL=/library/welcome/dsmsdn/drguinet02262001.htm>
)
has a justification for the switch that's worth reading.
* Karl E. Peterson's VB MVP site
(http://www.mvps.org/vb/) ignited a lot of controversy
over VB.NET, as did Bruce McKinney's page at
<http://members.home.net/bruce2u2/vbnet.htm>
.
Another negative site is
<http://www.mvps.org/vbnet/index.html?http://www.mvps.org/vbnet/dev/vb7/vbdotnet_comments.htm>
.