Fog Creek Software
Discussion Board

Any *specific* downsides to VB 6?


I'm trying to decide on what language to rewrite some programs in.  They're in vb 3. Considering vb6, .net, delphi.

I know... I already posted this question.  But I'm leaning strongly toward VB 6.  What I want to know is:

Are there any specific problems with VB 6 that will affect me T O D A Y or will definitely tomorrow.  (I.e., "it's an obsolete langauge" doesn't really have any real impact today and no quantifiable impact tomorrow"). 

One issue I'm aware of is the lack of Unicode support. My understanding is that this would only affect my ability to use non-ascii langauges like hebrew or kanji or something, but that I COULD still display french, spanish, norwegian, etc.

I am also aware that vb 6 doesn't support true inheritance.  That's not a problem either.  (True inheritance would make the program a slight big easier to program, but I can do the same thing with VB. Just not as elegant).

I am also aware of DLL hell,although we only use the standard vb 6 dlls.  Joel S. tells me that I can just have vb 6 run from those dlls in it's app directory and avoid any problems there.

Any other known PROBLEMS with VB 6 that I should be aware of?


Monday, July 7, 2003

Stay away from the built-in setup is loaded with bugs. You usually will not see them until a customer tells you that your software will not install on their system. I would suggest also making sure you have the latest service packs installed for VB 6.

Joel Sundquist
Monday, July 7, 2003

Quite frankly, VB 6 is a complete crap. That's it's main problem.

Of course, if you already know it, go with what you know.

Monday, July 7, 2003

I don't know what your software is, but if you're rewriting, there are a lot of benefits to going with OOP; unfortunately VB6 doesn't do OOP very well.
In addition, if you have to access low-level hardware, you'll have to deal with API's, which isn't fun.

VB doesn't do graphics natively - in fact it may be possible it's the worst at graphics of any of the modern languages.

Microsoft will drop support of VB6 in the future - the VB6 MCSD exams expire next year, expect VB6 to go soon afterwards.

On the plus side, there may be more VB6 code & components on the internet than for any other language (while they last).


Monday, July 7, 2003

>> "VB doesn't do graphics natively"

Actually it does.

Monday, July 7, 2003

Most would agree the main problem with VB 6 is distribution. As a development platform, its excellent. But its heavy dependence on runtimes, and the complete uselessness of its included 'Package and Deployment Wizard' means you really need to pick up a copy of Wise / Installshield / something else...

Monday, July 7, 2003

Oh, for the love of God...just use VB6.  The economics of it are so overwhelmingly in your favor it's not even funny.

Don't analyze this into the ground.  Just go with what you can be most productive in.

Monday, July 7, 2003

Delphi meet the requirements you are looking for (Nevermind the naysayers on this group who say otherwise.  Investigate the facts for yourself and decide).

Other Delphi features:

*Full OOP Language support (Inheritance, Polymorphism, Encapsulation etc.. unlike VB)

*Complies apps to a single executable (no dll hell, again unlike vb)

*Fast compiler (unlike vb)

*Source code provided for components (Visual Component Library) that come with Delphi (unlike vb)

*Full support by Borland (unlike MS suport of vb)

*Support for Linux (unlike vb)

*Full COM support

* Low-level Windows API Support

*Very helpful user community and support on newsgroups

*Huge 3rd party component availability (usually w/source code)

Monday, July 7, 2003

Use VB3.  It's not contaminated with any of that performance killing "COM" nonsense.

Old Grandpa
Monday, July 7, 2003

I am also in favor of Delphi. Delphi Appreciator covered all of the major points.

One data point: I have a client that I helped to move into Windows from DOS, whom I originally steered into Delphi. Their application is known as a "tank" with their customers - very crashfree, and very free of interactions with other installed applications. 

They have a base of 15,000+ customers.  They are delighted with everything that has flowed from using Delphi in the first place.

Bored Bystander
Monday, July 7, 2003

There is nothing wrong with VB6, except the installer issue. But that is easily fixed with InstallShield or InnoSetup.

Monday, July 7, 2003

What kind of app is it?

Homo Ironicus
Monday, July 7, 2003

If you're going to rewrite these apps you should just rewrite them in assembly language, for the most efficient software without all the DLL dependencies.

Mister Fancypants
Tuesday, July 8, 2003

One more vote for Delphi.  Remember that Borland's next version of Delphi will have full .NET support so if you decide to go .NET it should be a relatively painless conversion.

Not sure if Linux is in your future but it's trivial to convert an Delphi app to Kylix.

As other have already mentioned, VB6 is basically dead and its just a matter of time before MS stops supporting it.

Matt Foley
Tuesday, July 8, 2003

You don't mention what kind of distribution you need.

You also don't mention what kind of graphics and UI you are tying to build (or need to build!).

Last, but not least, you don't mention if the application is data centric. (ie: what technology  you are going to use for storing of the data). Do you need a lot of reports?

You also don’t say why the applications need to be re-written. I mean, Vb3? Heck, what is wrong with that? (I mean, you can still run it!). In fact, you can still run the original 1982 VisiCalc disk from the original IBM PC on a brand new pc today. (the whole spread sheet is less then 32 k in size..(before compressed!).

However, if you can imagine a head of sheep with one tall giraffe neck sticking out of the crowed, then that giraffe would be me. If you application is data centric, then I would suggest you use ms-access!

We been able to use access for 10 years now. That is longer then just about all of the technologies mentioned in this list (and we still are supported by MS).  Since ms-access is part of just keeps moving along. Of course, the main problem with ms-access is that it is NOT cool.

It really depends on the what, and who this product is for. It also is going to depend on time vs. Functionally you put into the products.

However, I should note that you are not asking for what language to use here..but only what is the downsides to VB6.

The programming language in ms-access is the same as V6, but the forms model is changed.

Albert D. Kallal
Edmonton, Alberta Canada

Albert D. Kallal
Tuesday, July 8, 2003

For those concerned about MS support for VB6, here's the official info from MS web site.

Mainstream Phase
Standard support offerings are available for VB6, such as Premier Support, free professional telephone and online incident support per warranty, paid professional telephone and online incident support, free critical updates (also known as a "HotFix" or a "QFE"), and free online self-help tools.

The Mainstream phase will be in effect for six years after the product's general availability date. VB6 was generally available in January 1999. Mainstream support will end March 31, 2005.

Extended Phase
Standard support offerings include Premier Support, paid telephone and online incident support, and free online self-help tools.

Critical Updates will be available for a fee. Free telephone and online incident support will no longer be available.

The Extended phase will be in effect from seven to nine years after the product's general availability date. Extended Phase support begins in April 2005 and ends January 2008.

Non-Supported Phase
Support will no longer be offered for VB6 after nine years of general product availability. VB6 will no longer be supported starting January 2008.



Mark Pearce
Tuesday, July 8, 2003


Thats great info.  Do you have the url?

Ged Byrne
Tuesday, July 8, 2003

As an alternative to Delphi, you might want to look around for alternative BASIC languages for those people not wishing to go .Net just yet.

FWIW, PowerBasic is a good procedural language, but no OOP for the time being, forcing you to learn Win32.

You could ask in those newsgroups:


Frederic Faure
Tuesday, July 8, 2003



Author of "Comprehensive VB .NET Debugging"

Mark Pearce
Tuesday, July 8, 2003

Only use VB6 if you want to be productive.
Otherwise, do it with something else.

Seriously, the only specifice downside is that you'll finish your work quicker, and if your on an hourly rate, than that's a downside, right?

Tuesday, July 8, 2003

My vote goes to VB6.
VB3 -> VB6 = (relatively) easy and economic in time.

Application Specialist
Tuesday, July 8, 2003

Someone asked:

"You don't mention what kind of distribution you need."


"You also don't mention what kind of graphics and UI you are tying to build (or need to build!)."


"Last, but not least, you don't mention if the application is data centric. (ie: what technology  you are going to use for storing of the data). Do you need a lot of reports?"


"You also don’t say why the applications need to be re-written. I mean, Vb3? Heck, what is wrong with that? (I mean, you can still run it!). "



And, actually, the argument that "VB 3 is good enough" (generally true) is the reason that I'm planning to use vb 6. We already know it. A lot of the code can be ported, and it's "good enough" for another 8 years.  Just looking for any "gotchas".

Are you kidding?  I don't expect ANY support from Microsoft, whether the product is still officially supported or not.  I've dealt with MS support as a developer.  I've never been impressed.

Our progarms are very very simple.  We try to use basic, commodity programming tools that millions have used, in order to create unique programs that no one is making.

So, we only do things in VB that thousands of people have done before.  VB 3 does everything we need except accessing the win32 api's newer 32 bit functions, and displaying GIFs and JPG images. 

Tuesday, July 8, 2003

I'd agree with the VB6 route ...

might be worth checking out any gotchas in VB6 -> VB.Net migration so you can code around them and make any future Vb.Net migration a little easier too ...

Tuesday, July 8, 2003

Thanks Mark.

Ged Byrne
Tuesday, July 8, 2003

If you are anticipating a .net migration why not bite the bullet and do it now?

Tuesday, July 8, 2003

Do not use any "outdated" languages, look for .NET and in your case VB.NET.
It has the language you know and all the .NET/OOP benefits as a bonus.

Geert-Jan Thomas
Wednesday, July 9, 2003

VB.NET is not a form of VB.

It's c# with added Carpal Tunnel Syndrome.

Either learn c# or stick with VB6.

Dave Hallett
Wednesday, July 9, 2003

I'm a fan of Delphi myself, but I recommend you to use VB6. In your case seems the natural path to follow.

Leonardo Herrera
Wednesday, July 9, 2003

"It's c# with added Carpal Tunnel Syndrome."

Excellent quote, Dave!

John Topley (
Friday, July 11, 2003

Entrepeneur :

My first thought was use VB6, as this will be easiest for your team to get up to speed with. However, you then mentioned you needed to refactor your entire architecture.

What are you planning to do with this new program in the future? Will it be updated regularly? If not, go for VB6. Does the new program need to be finished fairly quickly? If so, go for VB6. Otherwise, you might want to bite the bullet and get everyone on a learning curve to something else (not being a Delphi guru I couldn't comment on that).

Also, unless it's a straight port across of the code, there's probably some better ways of doing your original VB3 code in VB6 by using classes and interfaces. This might be worth considering.

Better Than Being Unemployed...
Tuesday, July 15, 2003

Better than... :

The original 18 programs all evolved out of a single program.

So they have a poor architecture.  (They were the right solution at the time. If we'd stared out writing a extensible program, that would have been a huge mistake. See Joel's  articles on that subject).

We don't have any plans to rewrite it in .net

Tuesday, July 15, 2003

*  Recent Topics

*  Fog Creek Home