I’ve been continuing to work on QuickLatin. The conversion from VB6 to VB.Net is horrible, but I am making real progress.
The key to it is to change the VB6 project, so that it will convert better. So for instance I have various places at which I make a raw Win32 API call, because VB6 just doesn’t do something. These must mostly go. I replace them with slower equivalents using mainstream VB6 features. In some cases I shall simply have to rewrite the functionality; but this is mainly front-end stuff.
All the same, the key point is to ensure that the VB6 project continues to work. It is essential not to allow this to fail, or develop bugs. This is one area where automated unit tests would be invaluable; but of course that concept did not arise until VB6 was long dead. So I have to run the program manually and do a few simple tests. This has worked, as far as I can tell.
The objective is to have a VB6 project that converts cleanly, and works out of the box. It may be slower, it may have reduced functionality in peripheral areas. But the business logic remains intact – all those hard-crafted thousands of lines of code still work.
It’s going fairly well. I’ve been working through known problems – arrays that need to be base 0 rather than base 1. Fixed strings inside user defined types have to go. There is a list on the Microsoft site of the likely problems.
Today I had my first attempt at running the VB.Net 2008 Upgrade Wizard. It failed, as I expected it to do. The purpose was to identify areas in VB6 that needed work. But the converted code only had 37 errors. Only 3 of these were in the business logic, rather than the front-end, and all were easily fixed in VB6. There were also a large number of warnings, nearly all of them about uninitialised structures. Those can wait.
So my next stage is to do something about the 34 front-end errors. Probably I shall simply have to comment out functionality. Splitters are done differently in VB.NET. The CommonDialog of VB6 no longer exists to handle file opening. That’s OK… I can cope with rewriting those.
It has reminded me how much I like programming tho.
In the middle of this enormous task, of course, there are no lack of people who decide to email me about some concern of their own. So … polite refusals to be distracted are now necessary. I hate writing those. But a big project like this can’t get done any other way.