Monday, November 27, 2006

New Web Site

We switched Web and email servers on the weekend. While our old provider gave great service, we outgrew their capabilities. We also wanted to move to a DotNetNuke-based Web site because DNN allows you to create great-looking Web sites with a fraction of the effort required to create one from scratch. We haven't done a DNN version of www.stonefield.com yet, just www.stonefieldquery.com. One of the best features of our new site is a support forums area; check it out if you're a Stonefield Query user.

Thanks to Jeff Zinnert, who did most of the work on the new site, Al Williams of Lucky Dog Systems who did the initial setup and design, and our former provider, Tim Thibault, who helped with the switch-over.

Updated Favorites for IntelliSense

Michael Hawksworth sent a couple of enhancement requests (including code; ya gotta love that!) for the Favorites for IntelliSense (FFI) Builder that deals with handling duplicate or substring names better. I've posted an update on the Technical papers page of www.stonefield.com.

Wednesday, November 22, 2006

New Files on White Papers and Source Code Page

I posted a couple of new files on the White Papers and Source Code page of the Stonefield Web site.

The first is an updated version of the My namespace that ships with the October 2006 CTP version of Sedna. It fixes a couple of bugs in My and includes a sample form demonstrating some of the uses of My.

The second is a compilation of articles originally published in the August and November 2005 issues of FoxTalk describing how to add IntelliSense to runtime applications and how to control IntelliSense so it only shows the properties, events, and methods you're interested in seeing, providing a lot more control over IntelliSense than you normally get (a feature I call "Favorites for IntelliSense").

Rick Strahl Saves the Day

Stonefield Query uses an online activation mechanism so a customer can activate their software without having to contact us for an activation code. When they purchase the software, we assign them a serial number and update a database on our Web site. They install and run Stonefield Query, type in the serial number, and click the Online button. This calls a West Wind Web Connection application on our Web site that returns an activation code. The code on the client site is similar to this:

loHTTP = newobject('wwIPStuff', 'wwIPStuff.vcx')
loHTTP.Connect('www.SomeURL.com')
loHTTP.AddPostKey('SomeKey', 'ValueForKey')
lcPage = 'wc.dll?SomeProcess'
lcHTML = ''
lnLen = 0
try
lnResult = loHTTP.HTTPGetEx(lcPage, @lcHTML, @lnLen)
catch to loException
lnResult = -1
endtry

This works great. However, I got a bug report from one of our support staff the other day. They updated to Internet Explorer 7 and suddenly online activation stopped working. The error message displayed was "invalid handle."

I dreaded having to track this down. First, I had to install IE 7, which I've been putting off doing for a variety of reasons. Second, I'd have to dig into stuff that I'm not really familiar with--the wwIPStuff code and possibly a DLL--to figure out why this is failing. (And why would installing an updated version of an application, albeit one closely tied into Windows, change the behavior of a system DLL anyway?)

However, I remember reading a message on the West Wind Message Board (a great resource even if you don't use any West Wind tools) from a week or so ago stating that the HTTP code in wwIPStuff was deprecated and that wwHTTP should be used instead. I hadn't any reason to revisit any of my code using wwIPStuff because it just worked. So, after installing IE 7, I changed one line of code:

loHTTP = newobject('wwHTTP', 'wwHTTP.prg')

I crossed my fingers and tried the online activation. Problem solved! Since my copy of West Wind Client Tools is a couple of years old (yeah, I know I should update it), clearly pre-dating IE 7, I'm not sure why this worked better than wwIPStuff. In researching the problem later, I found an entry in Rick Strahl's blog that described the problem and the fact that he doesn't know why wwIPStuff fails either. Although I read his blog regularly, clearly I'd missed the significance of this one. Thanks again, Rick, for a great product!