Archive for January, 2006


Here is another one of those rules I have learned the hard way:

Never test install your application installer on your development machine.

Why? Many moons ago I did test one of my install packages on my development machine and then promptly tested the uninstaller. Testing the uninstall is not something I find many developers doing because most do not think their clients will uninstall the app or would prefer they never uninstall the app. Well I prefer a clean Add/Remove Program list on my test machine so I always uninstall right after I install just to make sure it works.

So Monday I was writing up some instructions for the latest install I shipped and needed some screen shots for the documentation. I was out of the office when I was writing the steps so I decided to run the install on my development machine. I needed screen shots for the last step (the progress thermometer) and the “you are done screen”. I finished the documentation late Monday night.

The install had a couple of OCX files, which are registered without merge modules (not my favorite way to do things). Do you know what happens when you uninstall an application with OCX files? Well they get unregistered. This is not a big deal unless you use them somewhere else. {g}

Forward to today. I am in a rush. One of my clients needs a new application before Friday. It is a small application and figure I can squeak it out in between the other three projects I am working on this week (which might explain why I have not blogged at all in the last week). So I crank open my friendly Visual FoxExpress Project Wizard to start this new project this evening and I get a crash!

OLE error code 0×80040154: Class not registered.

OK, lets see, what has changed in the last 48 hours? That’s right, Mike and Toni pulled their traditional Friday the 13th release last Friday and I updated last night. Great! So I try to put together the reproducible steps to the crash to help the Feltman’s debug the problem. I reverse out the update and it still crashes. I dig in to the debugger and try to find the code that is troubled. The code is very straightforward and points me to the class and the class library which cannot be instantiated. This is where it really gets interesting.

I fire up the trusty Class Browser to look at the class and see what object is in the class and firing the OLE error. The Class Browser chokes on the same darn error. Uh-oh.

Then it hits me, I violated another cardinal rule of development on Monday and now I have just wasted 45 minutes tracking down a problem that I never should have hit. Stupid me. I could have simply used a VirtualPC session, but I was not near my external hard drive where I have the virtual machines stored.

So I have decided to fine myself for this rule violation, and added this problem into my personnel file so I can include it on my next review.

I hope you can learn from my mistakes. I hope you can avoid this problem and not waste time chasing problems that never should happen in the first place. OK, back to work.


Over the last five days I have received personal messages (other developers I am mentoring) and also seen several posts on FoxForum, ProFox, TechTips, and other sites questions that were simply answered in recent issues of FoxTalk and the Advisor Guide to Visual FoxPro (FoxPro Advisor).

Maybe some developers find it easier to post a question on the favorite site, but think of the knowledge you are missing by not subscribing. Wisdom from fellow developers. Developers struggling with the same day-to-day development you are struggling with. Developers who are more than willing to share their knowledge with anyone willing to read their articles.

Is it the cost? Is it the time to invest in reading? Is it the lack of knowing there are excellent publications to subscribe to for FoxPro content? Is your boss not willing to pay for it?

I can tell you I have subscribed to both mags for more than a decade. Always out of my own pocket. The reason is simple: I invest in my career. I also did not want to share with my co-workers each month when the issues arrived. I want my own set of archives. I read them on my own time. The investment has paid off in a big way.

Both FoxTalk and Advisors Guide to Visual FoxPro have online content. You can download solutions and examples immediately. In one case, the developer was looking for ideas on managing security and Doug Hennig is in the middle of a series on Security Roles and has a Security Manager object in the downloads. For US$79, the developer looking for ideas can get everything he needs to get started with an online subscription. Several other developers were experiencing the “Variable _REPORTOUTPUT is not found” error when the VFP 9 Report applications are not distributed with your application. Uwe Habermann’s article in FoxTalk clearly addresses all the runtime issues Fox developers face with the new reporting engine. Brilliant article.

Make it a belated New Year’s resolution to subscribe to these periodicals if you are not doing so. Save yourself a bundle of time and money by investing US$180. Do it now so you do not have to worry another minute on the excellent reading you are missing. Go ahead, it won’t hurt.


Just got this from a friend at Microsoft:

This is just a short mail to let you know that we have the patch for the WMF exploit available at As this is rather a nasty exploit, I recommend you download and install this as soon as possible, and spread the word to whomever you come in contact with. I am pasting in the letter from the Security team that describes the vulnerability below.

Sounds like solid advice.


If you are dreaming while you are sleeping and this dream is about sleeping, are you getting twice the rest?

Ever since I have completely given up caffeine I am dreaming more and having stranger dreams during the prolonged sleep I now need.


Technical Editor Andrew MacNeill reviews HackCX Professional in the January 2006 issue of Advisor Guide to Microsoft Visual FoxPro (formerly known as FoxPro Advisor). The article is titled “Tools for Forms and Classes in Visual FoxPro.”

Subscribers to the magazine can read the article online before it is delivered to you via snail mail. You can find it on the new Advisor link: Andrew writes:

“HackCX might have been written to deal with the most common type of “hack” developers need to make when browsing a form or a class — changing of the name — but that’s not all it does. Click on the Properties tab and you can review or change the settings for each object. Click the Methods tab and you can review the actual code. Perhaps most importantly, HackCX also brings sense to all those reserved fields you saw in figure 1. Click the Reserved tab and each field is labeled with its actual purpose. If you view a class library with HackCX, you’ll see that Reserved7 field is where the description of the class is stored and Reserved3 contains a list of all the custom properties and methods.”

And goes on to say:

“How valuable you’ll find HackCX really depends on the type of development you do. It isn’t expensive ($50 per developer license) but if you build applications using frameworks and rarely spend time cleaning up or refactoring code, then it may not be something you need. But the moment you need to re-define a class or make changes under the hood, you’ll wonder how you never lived without it.”

Heck, even people who develop with frameworks will find this tool valuable. In fact, most of the HackCX customers use one of the many commercial or their own custom frameworks. One customer wrote me about how he used HackCX to transition between frameworks.

Andrew, thanks for saying such nice things about our developer tool and informing the community about HackCX.


Is it just me, or are you feeling off by a second since the Atomic Clocks were adjusted yesterday? I am always thinking it is a second ahead what the clocks now tell me it is.

How long will it take me to get my biological clock synchronized? Would it have been a better idea to have accumulated 5 or 10 of these and adjusted it once so everyone does not have to change their clocks by one second? How much time was wasted by this time adjustment?

What did you do with your extra second? I can tell you I was stressing over a big decision, not having fun like I was expecting.


Just in case you have been hiding over the New Year’s break…

Craig Boyd is inspired by Kevin Ragsdale’s Fox Phrase 2006 post and created a new Visual FoxPro promo. I think it would be fun to see several VFP developers create something like this.

Want to learn more about Visual FoxPro? Who doesn’t! Andrew MacNeill created the Learning Visual FoxPro site/blog. Subscribed.